gpt4 book ai didi

c++ - 多态性和数据成员c++

转载 作者:行者123 更新时间:2023-11-28 07:49:09 25 4
gpt4 key购买 nike

我在多态性方面遇到问题我已经设置了这些基本类,稍后将添加方法,但我希望可以从这些类访问不同的数据成员。

class square
{
public:
bool canBeBought;
string name;
};

class property : public square
{
public:
int rent;
int colour;
int cost;
bool bought;
};

class specialSquare : public square
{
private:

public:
};

这是我调用的代码

square* properties[23];
for(int i = 0; i < 23; i++)
{
if(propertyStrings.at(i).substr(0,8) == "Property")
{
istringstream ss(propertyStrings.at(i).substr(11,21));
string temp;
properties[i] = new property;
while(!ss.eof())
{
properties[i]->bought = false;
properties[i]->name = propertyStrings.at(i).substr(0,11);
cout << "Name: " << properties[i]->name << endl;
ss >> temp;
properties[i]->cost = atoi(temp.c_str());
cout << "Cost: "<< properties[i]->cost << endl;
ss >> temp;
properties[i]->rent = atoi(temp.c_str());
cout << "Rent: "<< properties[i]->rent << endl;
ss >> temp;
properties[i]->colour = atoi(temp.c_str());
cout << "Colour: "<< properties[i]->colour << endl << endl;

break;
}
}
}

我的问题是,因为 name 变量在 square 类中,所以它工作正常,但属性类的数据成员未被识别。我的目标是尝试将所有方形数据存储在一个数组中,即属性类和 specialSquare 类,因为这将使我的程序稍后的事情变得更容易。

最佳答案

我猜你的问题是编译器无法将你的“属性”指针识别为指向 Property 类的实例,因为你将它们保存为指向 Square 的指针。将 properties[i] 转换为指向类 Property (((property*)properties[i])->colour) 的指针应该可以解决问题(您明确告诉编译器这是在事实上,那个类,你已经确保它不能是另一个类)。

如果 Property 和 Special_Square 实际上不是 Square,那么这里多态性可能是错误的选择。还有其他方法可以完成任务,例如通过一系列变体。

关于c++ - 多态性和数据成员c++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14216868/

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