gpt4 book ai didi

c++ - 返回虚函数的静态成员,缺少抽象类的 vtable

转载 作者:行者123 更新时间:2023-11-28 05:36:56 24 4
gpt4 key购买 nike

这里是 cpp 的新手,请注意,前面可能是愚蠢的。

我在实现虚函数时试图返回一个静态属性。这会发出一个链接器错误,指出该功能未实现。我迷失了这个问题。

我能够使用以下精简代码重现错误:

#include <iostream>
#include <map>

class Abstract1 {
public:
virtual char* getFoo();
};

class Base: public Abstract1 {
public:
char* getFoo() {
return Base::mapper[1];
}
static std::map<int,char*> mapper;
};

std::map<int, char*> Base::mapper;
int main(int argc, const char * argv[]) {
Base::mapper[0] = "Hello!\n";
Base::mapper[1] = "Goodbye!\n";
Base* hello = new Base();
// insert code here...
std::cout << hello->getFoo() << "\n";
return 0;
}

产生以下链接器错误:

Undefined symbols for architecture x86_64:
"typeinfo for Abstract1", referenced from:
typeinfo for Base in main.o
"vtable for Abstract1", referenced from:
Abstract1::Abstract1() in main.o

最佳答案

Abstract1::getFoo 只是虚拟的,而不是抽象的。

您可以将其抽象化:virtual char * getFoo() = 0; 或提供默认实现。

关于c++ - 返回虚函数的静态成员,缺少抽象类的 vtable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38056977/

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