gpt4 book ai didi

c++ - 如何继承一个已经提前声明的类

转载 作者:行者123 更新时间:2023-11-30 04:42:21 24 4
gpt4 key购买 nike

我已经声明了类:AnotherKlass。类Another只在another.hpp中定义,类Klassklass.hpp中声明并定义在klass.cpp.

我在 klass.cpp 中包含了 another.hpp 并且在 klass.hpp 中包含了前向声明的类 Another >.

// klass.cpp
#include "klass.hpp"
#include "another.hpp"

Klass::Klass()
{

}

// klass.hpp
#pragma once

class Another;

class Klass : public Another
{
public:
Klass();
};

// another.hpp
#pragma once

class Another
{
protected:
int a;
char b;
};

最佳答案

在你的文件 klass.hpp 中:

#pragma once

class Another;

class Klass : public Another
{
public:
Klass();
};

class Another; 是前向声明:它只是将名称 Another 引入 C++ 作用域。这个前向声明只包含名称 Another 的部分分类(即,它是关于一个类的)。它没有提供创建完整声明的所有详细信息(例如,它没有提供推断其大小的详细信息)。

因此,上面的 Another 是一个不完整的类型,编译器不知道它的大小。因此,您不能通过继承 Another 来提供类 Klass 的定义,这是一种不完整的类型。如果可以的话,Klass 的大小应该是多少?

关于c++ - 如何继承一个已经提前声明的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58778035/

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