我只想A可以创建B.(我也想在头文件中导出otherAPIs方法。) 但是我不能把B构造函数放到私有中。有办法解决我的问题吗? 谢谢。
class B
{
private:
B()
{ // doing something}
public:
void otherAPIs()
{}
};
class A
{
public:
B *getSomething()
{ //doing something
return new B()}
};
答案 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();
};