gpt4 book ai didi

c++ - 如何防止以 A 类之外的任何其他方式制作 B 类对象

转载 作者:行者123 更新时间:2023-11-30 00:52:08 26 4
gpt4 key购买 nike

这是我得到的:

class A{
B* object;
const B& create_object(){
if(object == nullptr)
object = new B(this);
return *object;
}
}

现在,事情是这样的。我应该不允许以 A 之外的任何其他方式创建 B。我被允许创建 B 对象的唯一方法是:

A a;
auto b1 = a.create_object();

现在我不允许创建对象,所以我将 B 的所有构造函数设为私有(private),并表示 A 是 B 的 friend 。然而在做的时候

auto b1 = a.create_object();

它不会编译,因为复制构造函数被调用。有什么办法可以避免吗?我不想返回一个指针,它需要是一个对象。

最佳答案

b1 将被推导为 B,而不是 const B&,因此编译器将检查复制构造器是否可用,使用 const auto& 对于这种情况

A a;
const auto& b1 = a.create_object();

关于c++ - 如何防止以 A 类之外的任何其他方式制作 B 类对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19859924/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com