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

时间:2017-06-10 18:29:49

标签: 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::stack<Order> orders_to_be_filled;      // keep track of orders
};

问题是函数process_shipment和process_order需要能够将内容推送到私有堆栈,但是我得到了一个无法解析标识符的问题&#34;如果我尝试在.cpp文件中引用它们,则会出错。

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

2 个答案:

答案 0 :(得分:0)

当您在其类之外实现成员函数时,您需要使用ClassName::为所有成员函数的名称添加前缀。

这样做可以让您只使用各自的名称访问每个私有变量。

另外,请不要忘记在#include文件顶部.cpp您的课程头文件。

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

答案 1 :(得分:0)

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

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

您可以在

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

使用代码

this.orders_to_be_filled;