对我来说,描述我的问题是相当困难的。 我有两个班,我会说和Derived_A
。您可以从名称中看到,类Derived_A
源自。另外在我的程序中,我还有其他两个类Base_B
和Derived_B
(也有继承)。类包含Base_B
的对象,而类Derived_A
包含Derived_B
的对象。C++继承指针
class Base_A {
public:
Base_A() {}
virtual ~Base_A() {}
Base_B b_;
Base_B* pointer_;
void init() {
b_ = Base_B();
pointer_ = &b_;
pointer_->setValue(1);
}
void print() {
pointer_->getValue();
}
};
class Derived_A: public Base_A {
public:
Derived_A() {}
virtual ~Derived_A() {}
Derived_B b_;
Derived_B* pointer_;
void init() {
b_ = Derived_B();
pointer_ = &b_;
pointer_->setValue(2);
pointer_->increaseValue();
}
};
class Base_B {
public:
Base_B() {}
virtual ~Base_B() {}
int value_;
void setValue(int value) {
value_ = value;
}
void getValue() {
cout << "Base_B: " << value_ << endl;
}
};
class Derived_B: public Base_B {
public:
Derived_B() {}
virtual ~Derived_B() {}
void increaseValue() {
value_++;
}
};
int main() {
Derived_A derived_A = Derived_A();
derived_A.init();
derived_A.print();
return 0;
}
如何看到A的每个类有一个B类对象和指向此对象的指针。我的问题是,当我调用功能print()
时,它不需要Derived_B* pointer_
,但尝试访问Base_B* pointer_
,这是不存在的。我怎么能在我的程序中说,它应该根据班级采取指针?或者我需要declarate内Derived_A
类像Base_B* pointer_
:
Base::pointer_ = pointer_;
也许是有我的问题的其他方法或算法?
非常感谢。
你可以创建一个虚函数来返回适当的指针。你知道Derived_A有两个'pointer_'s吗? –
是的,我知道Derived_A有两个指针。这只是一个例子。在真正的程序中,这个指针有不同的名字。关于你的想法。你的意思是说,我需要一个函数返回一个类B的指针,并将该指针指向函数print()? –
或者直接将该方法调用到print()中。您也可以使虚拟打印并在派生类中重写它。我不知道你在做什么。 –