2017-06-10 22 views
0

我试图在.cpp文件中实现.h文件的代码。这是头文件:在.cpp文件中实现时访问私有成员

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]内

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

访问orders_to_be_filled堆栈。 – Rakete1111

+0

在我的情况下,错误是由于方法首次在超类中声明而引起的,当它们应该被“保护”时它们是“私有”的。 –

回答

0

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

这样做使您能够访问每个私有变量及其各自的名称。

另外,不要忘了你的头文件#include你的头文件在你的.cpp文件的顶部。

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

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

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

您可以使用代码

this.orders_to_be_filled;