カスタムC++クラスを使用して3D位置を管理する際に問題を見つけるのに助けが必要です。カスタムC++クラスのバグ
p = fem->elementoFrontera[i]->nodo[0] - fem->elementoFrontera[i]->nodo[1];
どこnodo [i]は、プント*であり、それは罰金コンパイルが、私はしようとする:ここで私はこのように、ここでそれを使用してい
Punto operator+(Punto p){
return Punto(this->x + p.x, this->y + p.y, this->z + p.z);
}
Punto operator+(Punto *p){
return Punto(this->x + p->x, this->y + p->y, this->z + p->z);
}
Punto operator-(Punto p){
return Punto(this->x - p.x, this->y - p.y, this->z - p.z);
}
Punto operator-(Punto *p){
return Punto(this->x - p->x, this->y - p->y, this->z - p->z);
}
Punto *operator=(Punto p){
this->x = p.x;
this->y = p.y;
this->z = p.z;
return this;
}
Punto *operator=(Punto *p){
this->x = p->x;
this->y = p->y;
this->z = p->z;
return this;
}
クラスから関連するコードです行うには:
p = fem->elementoFrontera[i]->nodo[0] + fem->elementoFrontera[i]->nodo[1];
をコンパイラは言う:
メンバ関数0123でプント*「と
Punto*' to binary
演算子+」
コンストラクタと.hコードを取得できますか? –
Punto(double _x、double _y、double _z){ x = _x; y = _y; z = _z; } プント(Punto * v){ x = v-> x; y = v-> y; z = v-> z; (const Punto&v){ x = v.x; y = v.y; z = v.z; } –
このような混乱は、オペレータのオーバーロードを避けるための優れたケースになります... – ojrac