C++ 在.cpp文件中实现时访问私有成员
我正在尝试在.cpp文件中实现.h文件的代码。这是头文件: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
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;
你能创建吗?在我的例子中,这个错误是因为这些方法首先在超类中声明的,它们是
私有的
,而它们本应该受到保护
。