以下のコードから次のエラーが発生しました。
error: invalid use of member 'calls_object::OBJECT' in static member function|
error: from this location
ラインOBJECT->call();
ライン29から。
基本的に、関数は静的である必要があります。これは、Windowsスレッドを作成するコードの実際の簡略化バージョンであるためです。静的関数内でポインターを使用できないようですが、静的関数内でオブジェクトを作成することは問題ありません。別の方法はありますか?
CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)windowsthread, (LPVOID)i, NULL, &m_id);
static DWORD_PTR WINAPI windowsthread()
{
OBJECT->call();
}
l
class object
{
private:
public:
object(){}
~object(){}
void call(){}
};
class calls_object
{
private:
object* OBJECT;
public:
calls_object()
{
OBJECT = new object();
}
~calls_object(){}
#ifdef _WIN32
static void windows_function()
{
OBJECT->call();
}
#endif
};
int main()
{
calls_object O;
}