c++ - 将带有 this 的对象传递给另一个对象
问题描述
如果我有一个Y
which 有一个指向 的成员指针X
,我该如何创建Y
in的实例X
?
我想通过它有点像这样:
#include <memory>
struct X;
struct Y
{
Y(int n, std::shared_ptr<X> x)
: n_(n)
, x_(x)
{}
std::shared_ptr<X> x_;
int n_;
};
struct X
{
void d()
{
auto y = std::make_shared<Y>(20, this);
}
};
int main()
{
return 0;
}
解决方案
这是一个可能的解决方案,使用std::enable_shared_from_this
.
#include <iostream>
#include <memory>
using namespace std;
struct X;
struct Y
{
Y(int n, std::shared_ptr<X> x):
n_(n),
x_(x)
{
}
std::shared_ptr<X> x_;
int n_;
};
struct X : std::enable_shared_from_this<X>
{
void d()
{
auto y = make_shared<Y>(20, this->shared_from_this());
}
};
int main()
{
auto x = make_shared<X>();
x->d();
}
推荐阅读
- java - Copy different types of an array in JAVA
- javascript - 在窗口 onerror 函数内不能修改元素吗?
- python-3.x - Kivy,python:放大或缩小窗口时动态调整文本大小
- python - Pandas - 用不同的索引覆盖值
- python - 如何安装pyaudio?
- tensorflow - 输入图像与预期模型输入图像之间的形状不兼容
- r - RStudio:仅显示以前代码的结果
- c - 我想用这个函数打印素数。我的错误在哪里?
- bash - 将 bash 转换为 fish 函数(在 fish 中使用 rga-fzf)
- javascript - Infinitegrid 中每行一项