C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了c – 用’this’指针初始化std :: array大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图在模板类中初始化一个数组,并将this指针传递给数组中的所有元素.
这是我的类可能是这样的

template<int nUM> class outer_class;

template<int n>
class inner_class {
  private:
   outer_class<N> *cl;
  public:
   inner_class(outer_class<N> *num) {
    cl = num;
   }
   void print_num() {
    cl->print_num();
   }

};

template<int nUM> class outer_class {
 private:
  int number = NUM;

  // --> here I basically want NUM times 'this' <-- 
  std::array<inner_class<NUM>,NUM> cl = { this,this,this }; 

 public:

  void print_num() {
    std::cout << number << std::endl;
  }

  void print() {
    cl[NUM - 1].print_num();
  }
};

int main() {
  outer_class<4> t;
  t.print();

  return 0;
}

如何将this指针传递给存储在outer_class数组中的inner_class的所有元素(在C 11中)?

解决方法

首先,你不能在构造函数或任何其他成员函数之外使用这个.在这里,您必须在初始化列表中初始化cl.

delegating constructorstd::*_sequence一起使用:

template<int nUM> class outer_class {
    ...

    template <std::size_t... Integers>
    outer_class(std::index_sequence<Integers...>) 
    : cl{(static_cast<void>(Integers),this)...}
    {}

public:
    outer_class(/* whatever */) : outer_class(std::make_index_sequence<NUM>{}) {}
};

附注:

>您的打印成员函数标记为const,因为它们不会修改您的成员.
> cl [NUM – 1] .print_num();你可能想用std::array::back().

大佬总结

以上是大佬教程为你收集整理的c – 用’this’指针初始化std :: array全部内容,希望文章能够帮你解决c – 用’this’指针初始化std :: array所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。