Доступ к закрытым членам при реализации в файле.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;