c++ - 通过组合访问数据成员
问题描述
我的基类中有一个 struct obj。我不知道如何通过 Derv1 类(派生自基类)访问结构的数据成员。我尝试让 Base 和 Derv1 都成为 struct 的朋友——它仍然告诉我“数据成员是私有的”(它仅在 Base 中是私有的)。
例子 :
struct A{
public :
int total;
//some stuff
};
class MyClass{ // [Base] class
private:
A var1;
};
class Derv1{
private:
//some stuff
public void display_var1(Derv1 x){
return x.var1.total;
} // trying to return the value of A.total
};
我希望这是有道理的,以便您可以帮助我..谢谢您,
解决方案
首先,您必须确保它Derv
源自MyClass
.
class Derv1 : public MyClass { ... };
然后,您将需要找出显示变量的最佳方式。
我的建议:
virtual
在基类中创建一个成员函数。- 覆盖派生类中的函数。
- 确保在派生类实现中调用基类实现。
class MyClass { // [Base] class
public:
virtual void display() const
{
// Display var1 anyway you wish to.
}
private:
A var1;
};
class Derv1 : public MyClass {
public:
virtual void display() const
{
// Call the base class implementation first
MyClass::display():
// Display anything else that corresponds to this class
}
private:
//some stuff
};
推荐阅读
- javascript - 使用 cookie 的 Cors 安全性
- c - 在填充其容器的绘图区域上方添加小部件
- java - 使用 Squirrel SQL 客户端连接到 Sybase DB - 找不到驱动程序类异常
- amazon-web-services - 如何检查 bncert-tool 是否已在 Amazon Lightsail 实例上设置并运行
- c# - Caliburn.Micro NotifyOfPropertyChange UI 更新的不同方式
- python - 将 Python 变量从一个函数传递到另一个函数以将其与 SQL 数据库的变量进行比较
- session - Coldfusion Taffy API 在所有请求上返回“无法锁定会话范围”错误
- xpath - 在 xpath 中使用同级时无法获取元素属性
- javascript - iFrame 无法在 Chrome 中正确加载
- c - ESP32s NodeMCU 无法识别 SD 卡断路:“卡安装失败”