2009-11-08 3 views
3

Я не слишком компетентен в C++, и эта ошибка компилятора мне просто не имеет смысла. Следующая строка вызывает ошибку компиляции, показанной в названии:незаконная ссылка на нестатический член «Sun :: m_SunTexture»

m_SunTexture = LudoTextureManager::GetInstance()->GetTextureData(hardcoded.c_str()).m_Texture; 

где m_SunTexture определяется в моем файле заголовка, как

IDirect3DTexture9 *m_SunTexture; 

в частном разделе моего заголовка файла. Почему это! Для меня это не имеет смысла.

Подробнее код, если потребуется. m_SunTexture вызывается в этой функции

void Sun::DrawSun() 
{ 
    std::wstring hardcoded = L"..\\Data\\sun.jpg"; 
    m_SunTexture = LudoTextureManager::GetInstance()->GetTextureData(hardcoded.c_str()).m_Texture; 
    //more code here, cut off because it's useless for this. 
} 

DrawSun определен в заголовочном файле как:

static void DrawSun(); 

под публичной части моего файла заголовка.

+0

Этого требует больше кода, чтобы иметь смысл. – LiraNuna

+0

Действительно? Я попробую добавить еще кое-что, что может быть полезно ... но я не вижу, как будет полезен любой другой код. – 2009-11-08 23:54:33

ответ

5

Я предполагаю, что первая строка кода находится в статической функции, которая ссылается на нестатический элемент «m_SunTexture».

Для получения дополнительной информации см. this. По сути, статические функции не имеют указателя «this», поэтому обращение к нестационарным членам (которые принадлежат каждому экземпляру класса) не имеет никакого смысла.

+0

Это на самом деле имеет большой смысл. Я не уверен, почему эта функция была статичной в первую очередь. Спасибо! – 2009-11-08 23:57:58

+0

Нет проблем, спасибо за обновление вопроса с помощью объявления функции :-) – Justicle

Смежные вопросы