我有这个结构,但是当我提到对它自己类型的引用时我遇到了一些错误:
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;
};
我需要知道如何初始化这个结构,因为这是我过去在其他代码中使用它的方式。这个错误是什么?
答案 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的实例中使用其他类型的结构?