#include <iostream>
using namespace std;
class aclass
{
public:
int a;
};
class cclass: public aclass
{
public:
cclass()
{
a= //what do i write here//
}
}
class bclass : public aclass
{
public:
bclass()
{
a=9; //a is not constant here. I have just taken it const for simplicity.
}
int func();
};
int bclass::func()
{
cclass * ob;
ob = new cclass();
}
如何使cclass对象的变量a的值等于创建它的bclass对象的a值(cclass的对象)。我可以在函数func()中做到这一点 通过做
ob->a = a;
但我如何在cclass的构造函数中执行此操作?
答案 0 :(得分:1)
您必须将类对象传递给类构造函数: -
class cclass: public aclass
{
cclass(const bclass& b)
{
a = b.a;
}
}
如果您忽略代码中的其他特性。
答案 1 :(得分:1)
您可以定义指向创建类&#39; cclass&#39;的类的指针。在其定义中:
class cclass: public aclass
{
bclass * bclass_ref;
cclass(bclass * ref)
{
bclass_ref = ref;
a = b_class_ref->a;
}
}
然后,您将此关键字添加到您的班级定义&#39; cclass&#39;在班级&#39; bclass&#39;范围:
ob = new cclass(this);
注意:某些编译器可能会在类的构造函数上抛出错误&#39; cclass&#39;您需要做的就是将构造函数设为公共。
编辑:我自己测试了代码,你需要添加类的定义&#39; cclass&#39;在定义函数之前&#39; bclass :: func&#39;
答案 2 :(得分:-2)
您需要将其作为func()方法中的参数传递。
ob = new cclass(this.a);
答案 3 :(得分:-2)