Как получить доступ к переменным структуры внутри класса, внутри другого класса? - PullRequest
0 голосов
/ 05 мая 2019

У меня есть несколько файлов для каждого класса. Я пытаюсь использовать данные из структуры (внутри первого класса) и использовать их во втором классе.

Я пытался поместить структуру в отдельный файл, но это показалось мне немного ненужным. Я пробовал несколько разных способов его кодирования, таких как объявление структуры в 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;
};

Как выглядит описание функции для void buy_product ()?

bool Consumer::buy_product();
{
  if (consumer_balance < Products.price) return false;
  if (consumer_balance >= Products.price) return true;
}

Это один из нескольких способов, которые я пробовал, и я получаю ошибки за попытку сделать Products.price

1 Ответ

1 голос
/ 05 мая 2019

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
}
...