gpt4 book ai didi

C++ 未解析的外部符号

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:08:52 24 4
gpt4 key购买 nike

我有一个类设置,我从那个类开始使用继承。

在文件 a.h 中

class a
{
public:
virtual void print();
};

在文件 b.h 中:

#include "a.h"
#include <iostream>
class b: public a
{
public:
void print();
};

在 b.cpp 中

#include "a.h"
#include "b.h"
void b::print(){};

在主文件中我包含了这两个文件:

#include "a.h"
#include "b.h"

但是我得到了一个未解析的虚函数打印符号。文件 a.obj 被列为生成错误的文件我做错了什么?如果我将 b.cpp 移动到类定义下方的 b.h 中,它就可以正常工作。

最佳答案

您有 b::print 的实现,但没有 a::print 的实现。如果实例化一个类 a 的对象并在其上调用 print() 会发生什么?即

a o;
o.print();

b::print 覆盖 a::print 但您仍然需要实现 a::print(除非您将其设为纯虚拟)。

要在 a 中打印纯虚拟,请这样定义它:

virtual void print() = 0;

当一个类有纯虚函数时,你不能实例化那个类的对象。在拥有可以实际实例化的类之前,您必须从该类派生并提供任何纯虚函数的实现。

关于C++ 未解析的外部符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4362680/

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