如何在我的代码中的相同结构的结构中获取引用

时间:2017-01-27 21:28:03

标签: c++ struct

我有这个结构,但是当我提到对它自己类型的引用时我遇到了一些错误:

struct Point  {
              int x;
              int y;

              bool isLattice;

              Vect2D gradient;

              ///used only when isLattice is false
              Point p00; ///top-left corner
              Point p01; ///top-right corner
              Point p10; ///bottom-left corner
              Point p11; ///bottom-right corner

              ///the displacement vectors  Gradient-this.Vect2D
              Vect2D disp00;
              Vect2D disp01;
              Vect2D disp10;
              Vect2D disp11;  ///used along the gradient vector of the lattice points

              ///the Q-s for each corner Q= Disp*G which are going to be used for the interpolation
              double q00;
              double q01;
              double g10;
              double q11;

          };

我需要知道如何初始化这个结构,因为这是我过去在其他代码中使用它的方式。这个错误是什么?

3 个答案:

答案 0 :(得分:2)

我猜你会来自托管语言

struct Point  {
    //...
    Point p00; 
    // ...
}

这是你的问题。 C ++中的对象是 NOT 引用。这将Point的一个实例放在Point的实例中。这将如何运作?您可以使用指针或引用。

更改

Point p00;

Point & p00; // this requires being initialized  
             // in the constructor initialization list

或者

std::shared_ptr<Point> p00;

答案 1 :(得分:0)

Point pX;更改为Point * pX;

这样,代码就会编译,而你 使用适当的构造函数初始化Point指针。

答案 2 :(得分:-1)

为什么不在Point的实例中使用其他类型的结构?