非静态成员'Sun :: m_SunTexture'的非法引用

时间:2009-11-08 23:47:47

标签: c++ compiler-errors

我对C ++并不过分称职,这个编译器错误对我来说毫无意义。以下行调用标题中显示的编译器错误:

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();

在我的头文件的公共部分下。

1 个答案:

答案 0 :(得分:5)

我猜第一行代码是静态函数,它指的是非静态成员“m_SunTexture”。

有关详细信息,请参阅this。本质上,静态函数没有“this”指针,因此引用非静态成员(属于该类的每个实例)没有任何意义。