访问私有构造函数c ++

时间:2014-04-03 03:25:16

标签: c++ constructor

我只想A可以创建B.(我也想在头文件中导出otherAPIs方法。) 但是我不能把B构造函数放到私有中。有办法解决我的问题吗? 谢谢。

class B
{
private:
B()
{ // doing something}
public:
void otherAPIs()
{}
};

class A
{
public:
B *getSomething()
{ //doing something
   return new B()} 
};

2 个答案:

答案 0 :(得分:3)

如果您只想A创建B,则可以A通过在声明声明中添加B,使friend class A;成为B的朋友。 {{1}}。

答案 1 :(得分:1)

您可以使用friends class来执行此操作,因为MSN说。

如果您只想A创建B。您可以将B的接口定义为抽象,并将B的具体实现和A的实现放在cpp文件中,因此实现{{1}的构造函数这个类的用户无法访问。用户只能通过B创建B个对象。

在您的标头文件中:

A

在你的cpp文件中:

class BInterface {
public:
    // Methods declared here as abstract.
    virtual void some_method() = 0;
};
class A {
public:
    BInterface * create_b();
};