我每个班级都有多个文件。我正在尝试使用结构(第一类内部)中的数据,并在第二类中使用它。
我尝试将struct放在其自己的文件中,但这感觉有点不必要。我尝试了几种不同的编码方式,例如在main中声明该结构,并在另一个类中声明该结构。
// class 1
class Shop
{
public:
struct Products
{
int price;
int quantity;
};
void SetProductValue();
private:
float register_total;
};
// class 2:
class Consumer
{
public:
Shop Products;
int total_customers;
bool buy_product(); // <--
for this?
private:
string consumer_name;
float Consumer_balance;
};
无效的buy_product()的功能描述是什么样的?
bool Consumer::buy_product();
{
if (consumer_balance < Products.price) return false;
if (consumer_balance >= Products.price) return true;
}
这是我尝试过的几种方法之一,尝试做Products.price时会出错
答案 0 :(得分:1)
struct Products { ... };
声明一个类型,而不是一个产品实例。
要在您的课程中使用实际的产品,必须声明一个成员变量:
class Shop
{
public:
struct Product // no need for "s"
{
int price;
int quantity;
};
void SetProductValue();
private:
// either:
Product product; // <--- HERE
// or, if your shop has multiple products:
std::vector<Product> products;
float register_total;
};
为了访问一个特定的产品(哪个?),您的Shop
类必须公开一些访问器函数。一种选择是按名称选择产品:
Product Shop::GetProductByName(const std::string& name) const
{
// find right product _instance_ here
}