【发布时间】:2013-01-27 06:01:50
【问题描述】:
标题可能听起来有点混乱,我的意思是我有一个扩展类 B 的类 A,因此具有 B 的所有属性,我想将类 B 设置为一个实例(所有变量都在 B改变了),所以这样B从其他地方更新A会产生相应的效果,同时您可以操作A并进行单独的交互。代码如下。
class A : public B
{
public:
A() {}
~A() {}
void setA(B b)
{
// NOT SURE WHAT TO DO HERE
}
};
在 java 中有 this 和 .super(),在 C++ 中似乎不一样,this 是 const,无法更改,我不确定 .super()一切正常。
顺便说一句,有可能看到类 A 本身到另一个 A 实例吗?
【问题讨论】:
-
前段时间我也遇到过同样的问题,我发现的一种方法是将父方法声明为虚拟方法,然后在子类中限定它的范围。
-
这是一个常量指针。它不是指向 const 对象的指针。你可以在 setA 中做的是 this *((B*)this) = b;虽然这不是一个好方法。你应该做的是在 B 中有一个名为 void Set(const B& b); 的函数。复制。这将自动被 A “继承”。这里的优点是 B 知道它的所有成员(包括私有成员)。 A 并不认识 B 的所有成员。
-
"在 java 中有 ... 而在 C++ 中似乎不一样" 当然有。如果你在 Java 中明确说明你的意思,我们可以在 C++ 中演示等价物。
标签: c++ inheritance this