【发布时间】:2021-09-17 20:30:20
【问题描述】:
#include <iostream>
struct Class1 {
Class1(int var1_);
int var1;
};
Class1::Class1(int var1_)
: var1(var1_)
{
//how to get a referecnce to the instance of class2 ???
}
struct Class2 {
Class1 instance1;
Class2(int var);
};
Class2::Class2(int var)
: instance1(Class1(var))
{
}
int main()
{
Class2 instance2(3);
}
在主函数中,我创建了一个 Class2 的实例。 Class2 有 Class1 的成员,所以 Class2 的构造函数调用 Class1 的构造函数。
在 Class1 的构造函数中,我想获取对 Class1 实例的引用,即创建 Class2 实例的实例。如果不将地址传递给构造函数,如何实现这一点? 'this' 指的是刚刚创建的 Class2 实例,而不是导致 Class2 实例创建的 Class1 实例。 任何输入表示赞赏! :)
【问题讨论】:
-
请在每个 C++ 代码行的开头放置四个空格,并提供一些 minimal reproducible example - 和
main函数。您是否考虑过使用 smart pointers ?你可以使用containers 吗?如果不是,为什么? edit你的问题来解释 -
除了将“父”地址传递给“子”构造函数之外,没有明显的方法可以做到这一点。另见:Is there a Modern C++ way for a constructor to know its 'container' class?.
标签: c++ lambda constructor