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

3

我是一个有用的助手,可以为您翻译文本。

我正在尝试在.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需要能够将东西推入私有堆栈,但是如果我在.cpp文件中尝试引用它们,会出现“无法解析标识符”的错误。
这可能非常显然,但是在实现.cpp文件中的公共成员时如何访问私有成员?我不能修改头文件。

6
请问您能否创建一个 [mcve]。 - Rakete1111
在我的情况下,错误是由于方法首先在超类中声明,并且它们是“private”,而它们应该是“protected”引起的。 - Radon Rosborough
2个回答

4

当您在类外部实现成员函数时,必须使用ClassName::前缀来标识所有成员函数的名称。

这样可以让您仅通过它们各自的名称访问每个私有变量。

此外,不要忘记在.cpp文件的顶部#include您类的头文件。

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

0

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

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

你可以在 orders_to_be_filled 堆栈内部进行访问。

double ProcessOrders::process_shipment(int q, double c)

使用代码
this.orders_to_be_filled;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接