我該如何製作一個派生類,它可以改變其基類實例的所有變量?我知道我可以聲明基類變量是靜態的,但是當我這樣做時,我無法使用函數初始化它們,這使得代碼非常消息且難以編輯。來自類實例的派生類?
這是一個示例類;爲什麼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