私は慎重に自分のコードを調べましたが、なぜこのエラーが出てくるのか分かりません。C++エラー:不思議な矛盾する宣言エラー
エラーメッセージは以下の通りです:
main.cc: In function ‘int main()’:
main.cc:12: error: conflicting declaration ‘traj dim’
main.cc:11: error: ‘dim’ has a previous declaration as ‘unsigned int dim’
と1次のコマンドでそれを再現することができ
g++ -o a.out realvector.cc traj.cc main.cc
私main.ccはtrajがで定義されている
#include "realvector.h"
#include "traj.h"
using namespace std;
int main() {
unsigned int dim=1000;
traj TRAJ(dim);
return 1;
}
ですtraj.hとして
#ifndef TRAJ
#define TRAJ
#include "realvector.h"
class traj{
public:
traj(unsigned int);
~traj();
void next(double &);
private:
unsigned int it,nt; // index, total array size
double dt; // step time
RealVector r,v,a;
};
#endif
コンストラクタはtraj.cc
#include "realvector.h"
#include "traj.h"
traj::traj(unsigned int dim) : nt(dim) {
RealVector r(nt),v(nt),a(nt);
it=0;
}
traj::~traj(){
r.~RealVector();
}
にこのエラーが出てくる理由を任意のアイデアを定義していますか?また、r、v、正しいものを定義する方法は?野生のはあなたもTRAJ
を持って推測としてRealVectorは
#ifndef REAL_VECTOR_H
#define REAL_VECTOR_H
#include <iostream>
class RealVector {
public:
RealVector();
RealVector(unsigned int n);
~RealVector();
int dim;
double* data;
};
#endif
もちろん、main.cppに 'traj.h'を含めましたか? –
問題ありませんhttp://ideone.com/PNPsY2 –
@bsmile: 'traj :: traj(unsigned int dim):nt(dim)、r(nt)、v(nt)でr、 、a(nt){...}。しかし、これが動作する前に 'traj :: traj(unsigned int dim、unsigned int nt)'を作成するべきです。 – PrestonH