gpt4 book ai didi

c++ - 对基类的`vtable 的 undefined reference

转载 作者:行者123 更新时间:2023-11-30 04:27:22 25 4
gpt4 key购买 nike

我有以下代码:

// IBase.h
#include <iostream>

class IBase{
public:
virtual string getId();
};

// IBase.cpp
#include "IBase.h"
string IBase::getId(){};

// Base.h
#include <iostream>
#include <string>
#include "IBase.h"

using namespace std;
class Base : public IBase{
protected:
string id;
public:
Base(string _id);
string getId();
};

// Base.cpp
#include "Base.h"

Base::Base(string _id){
id = _id;
}
string Base::getId(){
return id;
}

// Base2.h
#include <iostream>
#include <string>
#include "Base.h"
using namespace std;

class Base2 : public Base{
public:
Base2(string _id);
string getId();
};

// Base2.cpp
#include "Base2.h"
Base2::Base2(string _id) : Base(_id){};

当我编译项目时,我在 Base2 中得到了对`vtable 的 undefined reference !这是我想念什么吗?

最佳答案

对 vtable 的 undefined reference 通常表示第一个虚函数(通常存储 vtable 的地方)未链接。

由于没有提供 Base2::getId 的定义(第一个虚函数),所以没有 vtable 被链接。

Base2::getId 添加一个定义,或者在类定义中删除该函数的声明。

关于c++ - 对基类的`vtable 的 undefined reference ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10989828/

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