gpt4 book ai didi

c++ - undefined reference ,但已定义

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

我有一个带有虚拟内联 getter 和 setter 的 A 类。从 A 派生出两个类 B 和 C。我有一个 D 类,派生自 B 和 C。从 D 创建对象并使用 getName() 导致“对 getName() 的 undefined reference ”。删除“内联”不起作用。正确包含头文件。这里有什么问题?

class A
{
public:
virtual inline std::string getName() const{return name;}

protected:
std::string name;
};

class B : public virtual A {};
class C : public virtual A {};

class D : public B, public C {};

最佳答案

无论是否使用 inline,您的代码都可以正常编译:with inlinewithout inline

但要记住这一点:在虚拟继承中,如果基类构造函数将参数作为参数,则必须显式初始化基类,

class D : public B, public C 
{
public:
D(string s) : A(s), B(s), C(s){}
//^^^^ note this!

};

只是 D(string s) : B(s), C(s) 是不够的:http://ideone.com/MPUPj

A(s) 需要:http://ideone.com/DNLkA

有关更多详细信息,请参阅此主题:about virtual base class and virtual inheritance in C++

关于c++ - undefined reference ,但已定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5361120/

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