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

C++ 在.cpp文件中实现时访问私有成员,c++,stack,private-members,C++,Stack,Private Members,我正在尝试在.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::sta

我正在尝试在.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
};
类处理顺序
{
公众:
双流程装运(整数q,双c);
双处理顺序(int q);
私人:
std::堆叠现有库存;//跟踪现有库存
std::stack orders_to_be_filled;//跟踪订单
};
问题是函数process_shipping和process_order需要能够将内容推送到私有堆栈上,但是如果我尝试在.cpp文件中引用它们,就会出现“无法解析标识符”错误


这可能非常明显,但在.cpp文件中实现公共成员时,如何访问私有成员?我无法修改头文件。

在类之外实现成员函数时,需要在所有成员函数的名称前面加上
类名::

这样做使您能够使用每个私有变量各自的名称访问它们

另外,不要忘了在
.cpp
文件的顶部包含类的头文件

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

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

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

您可以访问中的订单至待填充堆栈

double ProcessOrders::process_shipment(int q, double c)
使用代码

this.orders_to_be_filled;

你能创建吗?在我的例子中,这个错误是因为这些方法首先在超类中声明的,它们是
私有的
,而它们本应该受到
保护