//在啊,我有以下代碼如何從一個線程訪問非靜態方法在C++
包括「afxwin.h」
包括「msclr \ auto_gcroot.h」
使用命名空間System;
使用msclr :: auto_gcroot;
命名空間甲
{
公共引用類甲
{
公共:
虛擬BOOL Func鍵();
A();
〜A();
virtual bool Connect();
保護:
DWORD WINAPI threadConnect(無效* pParam);
};
公共類AHelper
{
公共:
auto_gcroot A;
};
}
//在A.cpp我有下面的代碼
//這是主要的DLL文件。
包括 「stdafx.h中」
包括 「啊」
包括 「弦」
包括 「sstream」
包括 「stdlib.h中」
包括「 strsafe.h「
include」windows.h「
包括「tchar。H」
命名空間甲
{
A :: A()
{
m_FuncHandle = mpsNil;
}
A ::〜甲()
{
}
布爾A :: Func鍵()
{
返回真;
}
布爾A ::連接()
{
AHelper * AHelper;
m_retVal = false;
AHelper = new AHelper();
AHelper-> A = this;
HANDLE Handle_Of_Thread = 0;
DWORD dwThreadId;
// DWORD WINAPI threadConnect(void * pParam);
//如果我在這裏聲明函數聲明我正在
//錯誤LNK2001:無法解析的外部符號 「無符號長__stdcall threadConnect(無效*)」 (?threadConnect @@ @ YGKPAX Z)
Handle_Of_Thread =的CreateThread (NULL,0,threadConnect,AHelper,0,& dwThreadId); //使用此代碼我得到
//錯誤C3867:'A :: A :: threadConnect':函數調用缺少參數列表;使用'& A :: A :: threadConnect'創建指向成員的指針
return m_retVal;
}
DWORD WINAPI A :: threadConnect(無效* pParam)
{
AHelper * AHelper =的reinterpret_cast(pParam);
//這裏我需要調用Func
return 0;
}
}
什麼是'ref'的東西?它當然不是標準的C++。另外,你可以在線程中調用你喜歡的任何函數,一般來說C++沒有限制。 – PlasmaHH 2013-04-11 18:42:15