gpt4 book ai didi

c++ - 我可以有一个只用工厂方法创建的成员变量吗?

转载 作者:太空宇宙 更新时间:2023-11-04 16:17:43 25 4
gpt4 key购买 nike

我有一个带有私有(private)构造函数和工厂方法的类。

是否可以让该类的实例成为另一个类的成员变量?如果我尝试正常执行它,它不会编译,因为它无法调用构造函数。有没有可能得到一个用工厂方法初始化的成员变量?

如果没有,我有什么选择?我需要使用某种指针吗?

class ClassWithPrivateConstructor
{
private:
ClassWithPrivateConstructor(){}
public:
static ClassWithPrivateConstructor Create(); // factory method
};

class ClassWithMemberVariable
{
ClassWithPrivateConstructor a;
};

最佳答案

当然。由于无法默认初始化成员,因此您需要一个初始化程序:

ClassWithPrivateConstructor a = ClassWithPrivateConstructor::Create();

或者,如果您坚持使用 2011 年之前的语言变体,则每个构造函数中都有一个初始化程序:

public:
ClassWithMemberVariable() : a(ClassWithPrivateConstructor::Create()) {}

关于c++ - 我可以有一个只用工厂方法创建的成员变量吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20748557/

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