template<typename T>
class Thread {
public:
void start() {
T* derived = dynamic_cast<T*>(this);
thread = new boost::thread(boost::bind(&T::doIt, derived, derived));
}
void doIt(T* derived) {
(*derived)();
}
};
class test : public Thread<test> {
};int main() {
test t; t.doIt();
return 0;
}
报错 testThread.cpp
1>g:\workspace\thread\testthread\testthread.cpp(10): error C2660: 'Thread<T>::doIt' : function does not take 0 arguments
1> with
1> [
1> T=test
1> ]
class Thread {
public:
void start() {
T* derived = dynamic_cast<T*>(this);
thread = new boost::thread(boost::bind(&T::doIt, derived, derived));
}
void doIt(T* derived) {
(*derived)();
}
};
class test : public Thread<test> {
};int main() {
test t; t.doIt();
return 0;
}
报错 testThread.cpp
1>g:\workspace\thread\testthread\testthread.cpp(10): error C2660: 'Thread<T>::doIt' : function does not take 0 arguments
1> with
1> [
1> T=test
1> ]
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货