在 .cpp 文件中实现时访问私有成员

Accessing private members when implementing in a .cpp file

我正在尝试在 .cpp 文件中实现 .h 文件的代码。这是头文件:

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 需要将东西压入私有堆栈的能力,但如果我尝试引用它们,我会收到 "unable to resolve identifier" 错误在 .cpp 文件中。

这可能真的很明显,但是如何在 .cpp 文件中实现 public 成员的同时访问私有成员?我无法修改头文件。

当您在 class 之外实现成员函数时,您需要在所有成员函数的名称前加上前缀 ClassName::

这样一来,您就可以使用各自的名称访问每个私有变量。

另外不要忘记 #include 将 class 的头文件放在 .cpp 文件的顶部。

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

您可以在 class 的 .cpp 中访问它们。头文件包含声明而 .cpp 文件包含定义。

在上面的代码中,两个堆栈都是私有的,这意味着它们只能在同一个 class 的函数中访问。因此,当您在 .cpp 文件中定义 process_shipment 时,您可以将任何内容压入堆栈。

您可以在

中访问 orders_to_be_filled 堆栈
double ProcessOrders::process_shipment(int q, double c)

使用代码

this.orders_to_be_filled;