Доступ к закрытым членам при реализации в файле.cpp

Я пытаюсь реализовать код для файла.h в файле.cpp. Это заголовочный файл:

class ProcessOrders
{
public: 
    double process_shipment(int q, double c);
    double process_order(int q);
private:
    std::stack<Inventory> Inventory_on_hand;    // keep track of inventory on hand
    std::stack<Order> orders_to_be_filled;      // keep track of orders
};

Проблема в том, что функции process_shipment и process_order требуют возможности помещать вещи в частные стеки, но я получаю ошибку "не удается разрешить идентификатор", если пытаюсь сослаться на них в файле.cpp.

Это, вероятно, действительно очевидно, но как мне получить доступ к закрытым членам при реализации открытых в файле.cpp? Я не могу изменить файл заголовка.

2 ответа

Решение

Когда вы реализуете функции-члены вне их класса, вам необходимо добавить префикс имен всех функций-членов с помощью ClassName::,

Это позволяет вам получить доступ к каждой закрытой переменной с соответствующим именем.

Также не забудьте #include ваш заголовочный файл вашего класса в верхней части вашего .cpp файл.

double ProcessOrders::process_shipment(int q, double c)
{ /*...*/ Inventory_on_hand. //... }
double ProcessOrders::process_order(int q)
{ /*...*/ }

Вы можете получить к ним доступ в.cpp для класса. Заголовочные файлы содержат объявление, в то время как.cpp файлы имеют определение.

В приведенном выше коде оба стека являются частными, что означает, что к ним можно получить доступ только внутри функций одного и того же класса. Поэтому, когда вы определите process_shipment в своем файле.cpp, вы можете поместить что-либо в стек.

Вы можете получить доступ к стеку orders_to_be_filled в

double ProcessOrders::process_shipment(int q, double c)

используя код

this.orders_to_be_filled;
Другие вопросы по тегам