gpt4 book ai didi

c++ - 在基类中调用真正的虚函数

转载 作者:行者123 更新时间:2023-11-28 02:46:50 25 4
gpt4 key购买 nike

编辑:正确的标题应该是“在基类中调用重载的真实虚函数”,因为这是问题的重要组成部分。

我有一个基类,它有一个真正的虚函数和几个其他的普通函数。其中一个正常的调用线程中的虚函数,我在该行中收到一个错误,我不明白。我猜是跟线程有关,但是由于基类是抽象的,每个派生类都要实际实现虚函数,所以应该没有问题。也许这是完全不同的东西。这或多或少是它的样子:

class Base {
virtual int getInfo(int a) = 0; // the culprit?

void getInfo(); // is implemented, calls getInfo(int); Does
// actually have the same name. Works perfectly fine.

void getThreadedInfo(); // for details, see below

}

// ..later..

Base::getThreadedInfo() {
...
for(int i=0; i<maxThreads; i++) {
threads.push_back(thread(getInfo, i)); // this is line 85
}
...
}

完整的错误信息是:

Error   1   error C3867: 'Base::getInfo': function call missing argument list; use '&Base::getInfo' to create a pointer to member   
c:\path\to\base.cpp 85 1 Project

Error 2 error C2661: 'std::thread::thread' : no overloaded function takes 2 arguments
c:\path\to\base.cpp 85 1 Project

最佳答案

你可以使用类似的东西:

threads.push_back(std::thread(static_cast<int (Base::*)(int)>(&Base::getInfo), this, i));

因为 &Base::getInfo 是不明确的。

关于c++ - 在基类中调用真正的虚函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24125356/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com