C++ 是否可以在构造函数中初始化新对象';s初始化列表并引用它?
客户端是DLL的顶级,因此我需要在初始化时创建并传递新的会话对象,以创建请求者,会话应分配给同一会话。可能吗C++ 是否可以在构造函数中初始化新对象';s初始化列表并引用它?,c++,initialization,C++,Initialization,客户端是DLL的顶级,因此我需要在初始化时创建并传递新的会话对象,以创建请求者,会话应分配给同一会话。可能吗 class Session { public:Session() {} }; class Requestor { public: Requestor(const Session& session) {}; }; class Client { public:Client() { Session newSession; requestor = Requestor
class Session
{
public:Session() {}
};
class Requestor
{
public: Requestor(const Session& session) {};
};
class Client
{
public:Client()
{
Session newSession;
requestor = Requestor(newSession);
}
private:
Session session;
Requestor requestor;
};
这是可能的,但有些脆弱,因为初始化顺序取决于成员的声明顺序。如果这些仍然如您的示例中所示,您可以简单地执行
class Client()
{
public:
Client() : requestor(session) // session is implicitly default constructed
{}
private:
Session session;
Requestor requestor;
};
注意:不清楚为什么要在构造函数中实例化本地
会话
对象。我认为这是一个错误。为什么不使用会话
成员?您已经必须初始化请求者
?如果您希望他们引用相同的对象,您将需要指针。@kamilk纯属胡说八道,不需要任何指针。谢谢。事实上,这是因为我曾经使用c#。也许我只是误解了OP所说的“分配给同一个会话”的含义,但这取决于请求者在其构造函数中所做的工作,客户端
和请求者
很可能都有一份会话
的副本,而不是“分配给同一个”.@kamilk,这取决于内部请求者
,未显示。它不依赖于客户端
或其构造函数。