我该如何制作一个派生类,它可以改变其基类实例的所有变量?我知道我可以声明基类变量是静态的,但是当我这样做时,我无法使用函数初始化它们,这使得代码非常消息且难以编辑。来自类实例的派生类?
这是一个示例类;为什么c2不能在theC1类中编辑x。如果它引用的是不是C1的c1类,那么引用的是什么?
#include <stdio.h>
class c1
{
public:
c1(int d)
{
x = d;
}
int x;
};
class c2 : public c1
{
public:
c2(c1& ref)
:
c1(ref)
{};
void setx()
{
x = 5;
}
};
int main()
{
c1 theC1(4);
c2 theC2(theC1);
theC2.setx();
printf("%d\n",theC1.x);
printf("%d\n",theC2.x);
return 0;
}
这甚至不应该编译......或者至少要给出大量的警告。 – fredrik 2013-04-04 08:45:12
@fredrik嗯,为什么? – Angew 2013-04-04 08:51:12
@fredrik:其实它是完全有效的。这不是很好,它包含C头文件,但它是完全有效的,并且将在没有任何错误或警告的情况下进行编译。 – Zeta 2013-04-04 08:51:25