Как получить ссылку в структуре той же структуры в моем коде

У меня есть эта структура, но я получаю некоторые ошибки, когда я упоминаю ссылку на его собственный тип:

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 ответа

Я предполагаю, что вы пришли из управляемого языка

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

Это твоя проблема. Объекты в C++ НЕ являются ссылками. Это помещает экземпляр Point в экземпляр Point. Как это будет работать? Вы можете использовать указатель или ссылку.

+ Изменить

Point p00;

в

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

или, может быть

std::shared_ptr<Point> p00;

+ Изменить Point pX; в Point * pX;,

Таким образом, код скомпилируется, и вы можете инициализировать указатели Point, используя соответствующий конструктор.

Почему вы не используете другую структуру типов в экземплярах Point?

Другие вопросы по тегам