我想做的是:
Sub
类中有一个Base
类对象。Sub
类访问Base
类的变量Base.h
#include "Sub.h"
class Base
{
Sub subobject
int x;
}
Sub.h
#include Base // to acces x from .cpp file
class Sub: public Base
{
void changevar();
}
Sub.cpp
#include "Sub.h"
// I tried to include base in here but that did not work either
void Sub::changevar()
{
x++;
}
但是我一直在获取未定义的基类和未定义的未声明x错误。 我该怎么解决?
答案 0 :(得分:1)
如果将子对象存储为指针怎么办?
您还需要
但是,一个基类引用一个子类似乎有点奇怪,它破坏了整个继承点,如果您需要这样做,那么您应该重新考虑您所做的操作是否正确。
还要注意,Sub将有其自己的Base作为其一部分,因此子对象的Base部分将与外部Base不同。
例如如果Base本身有一个称为Y的整数,那么我们将具有Base的Y,但子对象也具有单独的Y。
也许可以更好地解释为什么基类需要一个子类的副本?
粗略代码草图:
Base.h
#include "Base.h"
class Sub;
class Base
{
public:
Sub* subobject;
Base();
~Base();
void createSub();
};
Base.cpp
#include "Base.h"
#include "Sub.h"
Base::Base()
{
subobject = new Sub();
}
Base::~Base()
{
delete subobject;
}
void Base::createSub()
{
if (subobject)
return;
subobject = new Sub();
}
Sub.h
#include "Base.h"
class Sub : public Base
{
void changevar();
int x = 0;
};
Sub.cpp
void Sub::changevar()
{
x++;
}