如何从已经被预先声明的类中继承

问题描述 投票:1回答:1

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

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

// 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;
};
c++ inheritance header-files forward-declaration incomplete-type
1个回答
1
投票

在您的文件klass.hpp中:

#pragma once

class Another;

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

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

因此,以上Another不完整类型,其大小对于编译器是未知的。因此,不能通过从不完整的类型Klass继承来提供类Another的定义。如果可以的话,Klass的大小应该是多少?。

© www.soinside.com 2019 - 2024. All rights reserved.