这是我得到的:
class A{
B* object;
const B& create_object(){
if(object == nullptr)
object = new B(this);
return *object;
}
}
Run Code Online (Sandbox Code Playgroud)
现在,这就是事情.我不应该允许以任何其他方式创建B而不是A.我允许创建B对象的唯一方法是:
A a;
auto b1 = a.create_object();
Run Code Online (Sandbox Code Playgroud)
现在因为我不应该允许创建对象,所以我将所有B的构造函数设为私有,并且说A是B.HOWEVER的朋友.
auto b1 = a.create_object();
Run Code Online (Sandbox Code Playgroud)
它不会在调用复制构造函数时编译.有什么办法可以避免吗?我不想返回指针,它需要是一个对象.
b1
将被推断为B
,而不是const B&
,因此编译器将检查,copy-ctor是否可用,const auto&
用于此案例
A a;
const auto& b1 = a.create_object();
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
87 次 |
最近记录: |