Как получить ссылку в структуре той же структуры в моем коде
У меня есть эта структура, но я получаю некоторые ошибки, когда я упоминаю ссылку на его собственный тип:
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?