0
這個問題類似:Start thread with member function這一個:std::thread calling method of class與派生類的成員函數啓動線程
不過,我有以下幾點:
#include <thread>
#include <iostream>
class myAbstractClass {
public:
virtual void myFunction() = 0;//abstract class
}
class myFirstClass : public myAbstractClass {
public:
void myFunction() { std::cout << "First class here";}
}
class mySecondClass : public myAbstractClass {
public:
void myFunction() { std::cout << "Second class here";}
}
然後,我要叫myFunction()
從一個不同的地方新線程,但以下不編譯(我想不出其他任何東西嘗試):
public void callMemberFunctionInThread(myAbstractClass& myInstance) {
std::thread myThread (&myAbstractClass::myFunction, myInstance);
//supposed to call myInstance.myFunction() on myThread
}
「不編譯」不是很具體。你收到什麼錯誤信息? –
Intellisense不抱怨,編譯開始,然後它給'C2259'myAbstractClass':不能實例化位於C:\ Program Files文件(x86)\ Microsoft Visual Studio \ 2017 \ Community \ VC中的文件'tuple'中的抽象類\ Tools \ MSVC \ 14.10.25017 \ include'(line 199) – ProgrammingMachine5000
'std :: ref(myInstance)'? – peppe