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