gpt4 book ai didi

c++ - 在 C++ 中通过父类访问子类的元素?

转载 作者:太空宇宙 更新时间:2023-11-04 11:54:43 28 4
gpt4 key购买 nike

class game_list
{
public:
string name;
float price;
string platform;
string console;
string condition;
bool is_portable;
string N_bits;

};

class catridge_object:public game_list
{
string N_bits;
bool is_import;
};

class disk_object:public game_list
{
string disk_type;
int n_disk;
};

class digital_object:public game_list
{
float file_size;
bool is_for_pc;
};

game_list *pointerMain;

int main()
{
int optionChosen=0;
vector<game_list*> mainVector;

}

这里的game_list是父类,还有从它派生的子类。我正在尝试创建一个 game_class 对象列表, vector mainVector 将包含这些对象。现在,根据用户输入, vector 中的所有对象都将具有 game_list 类中描述的公共(public)属性,并且还根据用户的选择,它将具有来自其他 3 个子项的附加信息从父类派生的类。所以我将使用以下命令创建一个 dynamic game_list

pointerMain=new game_list;

一切似乎都很好,但问题是当我尝试使用 pointerMain->(子类的任何成员) 访问子类时,它不会那样工作。有什么想法吗?

最佳答案

您需要将 pointerMain 转换为派生类类型。

catridge_object* obj = dynamic_cast<catridge_object*>(pointerMain);
if (obj)
obj->members_of_catridge_object...

另外,基类应该是多态的,所以至少需要在基类中添加一个虚方法(最好的选择是析构成员)。

或(对于某些类型转换):

static_cast<catridge_object*>(pointerMain)->members_of_catridge_object...;

如果 pointerMainnew catridge_object 生成,请注意它会起作用,否则行为未定义。

关于c++ - 在 C++ 中通过父类访问子类的元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16622666/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com