【发布时间】:2013-12-08 22:32:40
【问题描述】:
我有一个基类和一个派生自它的类。在下面的例子中,Frame_Pic 是Base_Pic 的派生类,我没有详细介绍。 Frame_Pic 有成员 vertical、horizontal 和 corners,它们不在基类中。 Picture 是一个接口类,基本上持有一个指向Base_Pic 的指针。
当我尝试在下面的 reframe 函数中为这些分配新值时,我收到一条错误消息,指出 Base_Pic 没有此类数据成员。
动作pic.p->vertical 会认为我正在访问基类。如果我将这些数据成员放在基类中,我的其余函数的编写方式就不会适应这种添加。如何分配给这些数据成员?
Picture frame(const Picture& pic, char v, char c, char h)
{
Frame_Pic* temp = new Frame_Pic(pic.p);
temp->vertical = v;
temp->horizontal = h;
temp->corners = c;
Picture temp2(temp);
return temp2;
}
void reframe(Picture& pic, char v, char c, char h)
{
pic.p->vertical = v;
pic.p->horizontal = h;
pic.p->corners = c;
}
【问题讨论】:
-
Picture 是您的 Base_Pic 还是 Frame_Pic 类?
-
你能发布实际的错误信息吗?并向我们展示如何初始化发送给函数的对象。
-
您是否尝试通过指向 Base_Pic 的指针(或引用)访问 Frame_Pic 中的成员?
-
@NonlinearIdeas - 请参阅问题中的这一行 - “图片是一个接口类,基本上包含指向 Base_Pic 的指针。”
标签: c++