在构造函数初始化列表中使用它来将字段设置为指向自己的实例

时间:2017-03-23 02:14:08

标签: c++

我有以下内容:

class MyClass
{
  private:
    int my_data;
    MyClass* my_pointer;

  public:
    MyClass():
      my_data(0),
      my_pointer(this)
    {}

    MyClass(const int& data):
      my_data(data),
      my_pointer(this)
    {}
};

然而,当我跑

std::vector<MyClass> vec(10);
int n = {0};
std::generate(vec.begin(), vec.end(), [&n] { return MyClass(n++); });

十个实例的每个my_pointer都具有相同的值。如何更正此代码,以便my_pointer指向该字段所在的实例?

0 个答案:

没有答案