2011-01-01 4 views
0

私が書いているプログラムでは、2つのクラス(Coordinate、Graph)に対して書いていますが、そのうちの1つはコンストラクタ引数として他のクラスを取ります。 私はそれをコンパイルしようとする私を取得Graph.cppため、次のエラー:C++:Xcodeのエラー。 "Graph :: Coordinate :: Coordinate()"の参照先:

未定義のシンボル: 「グラフ:: ::座標(ダブル)座標」、から参照: グラフ::グラフ()でGraph :: o Graph :: Graph.o内のGraph() "Graph :: Coordinate :: Coordinate()"、参照先: グラフ::グラフ(グラフ::座標、グラフ::座標、グラフ::座標グラフ::座標(Graph :: Coordinate、Graph :: Coordinate、Graph :: Coordinate、Graph :: Coordinate、Graph :: Coordinate、Graph :: Coordinate、Graph :: Coordinate、Graph :: Coordinate) )in Graph.o グラフ::グラフ(グラフ::座標、グラフ::座標、グラフ::座標) Graph :: Graph(Graph :: Coordinate、Graph :: Coordinate、Graph :: Coordinate)グラフ::グラフ(Graph :: Coordinate、Graph :: Coordinate、Graph :: Coordinate) Graph :: Graph(Graph :: Coordinate、Graph :: Coordinate):Graph.o グラフ::グラフ(グラフ::座標、グラフ::座標)グラフ::座標(Graph :: Coordinate、Graph :: Coordinate)Graph.o グラフ::グラフ(Graph :: Coordinate、Graph :: Coordinate)Graph.o グラフ::グラフ(グラフ::座標、グラフ::座標) Graph :: Graph(Graph :: Coordinate)グラフ::グラフ(Coordinate、Graph :: Coordinate)グラフ::グラフ(Coordinate、Graph :: Coordinate)グラフ::グラフ(Gra ph :: Coordinate):Graph.o Graph :: Graph(Graph :: Coordinate):グラフ(Graph :: Coordinate)グラフ::グラフ(Graph :: Coordinate) Graph.oのGraph :: Graph():Graph.o Graph :: oのグラフ:: Graph() Graph :: oのグラフ:: Graph()Graph.oのGraph :: Graph()Graph.o :: Graph.o LDでGraph.o グラフ::グラフのグラフ()(): collect2は見つからない記号(S):ldは、私は、コードをチェックし、できませんでし

終了ステータス1が返さ普通ではないものを見つける。ここで は、4つのクラスファイルは、次のとおりです(。それは取捨選択する多くのコードだ場合は申し訳ありませんが)

Coordinate.h

class Graph{ 
#include "Coordinate.h" 
public: 
Graph(); 
Graph(Coordinate); 
Graph(Coordinate, Coordinate); 
Graph(Coordinate, Coordinate, Coordinate); 

void setXSize(int); 
void setYSize(int); 

void setX(int); //int corresponds to coordinates 1, 2, or 3 
void setY(int); 
void setZ(int); 

int getXSize(); 
int getYSize(); 

double getX(int); //int corresponds to coordinates 1, 2, or 3 
double getY(int); 
double getZ(int); 

void outputGraph(); 
void animateGraph(); 


private: 
int xSize; 
int ySize; 

Coordinate coord1; 
Coordinate coord2; 
Coordinate coord3; 

}; 

Coordinate.cpp

#include <iostream> 
#include "Coordinate.h" 


Coordinate::Coordinate() 
{ 
xCoord = 1; 
yCoord = 1; 
zCoord = 1; 

xVel = 1; 
yVel = 1; 
zVel = 1; 
} 
Coordinate::Coordinate(double xCoo) 
{ 
xCoord = xCoo; 
yCoord = 1; 
zCoord = 1; 

xVel = 1; 
yVel = 1; 
zVel = 1; 
} 
Coordinate::Coordinate(double xCoo,double yCoo) 
{ 
xCoord = xCoo; 
yCoord = yCoo; 
zCoord = 1; 

xVel = 1; 
yVel = 1; 
zVel = 1; 
} 
Coordinate::Coordinate(double xCoo,double yCoo,double zCoo) 
{ 
xCoord = xCoo; 
yCoord = yCoo; 
zCoord = zCoo; 

xVel = 1; 
yVel = 1; 
zVel = 1; 
} 

void Coordinate::setXCoord(double xCoo) 
{ 
xCoord = xCoo; 
} 
void Coordinate::setYCoord(double yCoo) 
{ 
yCoord = yCoo; 
} 
void Coordinate::setZCoord(double zCoo) 
{ 
zCoord = zCoo; 
} 
void Coordinate::setXVel(double xVelo) 
{ 
xVel = xVelo; 
} 
void Coordinate::setYVel(double yVelo) 
{ 
yVel = yVelo; 
} 
void Coordinate::setZVel(double zVelo) 
{ 
zVel = zVelo; 
} 


double Coordinate::getXCoord() 
{ 
return xCoord; 
} 
double Coordinate::getYCoord() 
{ 
return yCoord; 
} 
double Coordinate::getZCoord() 
{ 
return zCoord; 
} 
double Coordinate::getXVel() 
{ 
return xVel; 
} 
double Coordinate::GetYVel() 
{ 
return yVel; 
} 
double Coordinate::GetZVel() 
{ 
return zVel; 
} 

Graph.h

class Graph{ 
#include "Coordinate.h" 
public: 
Graph(); 
Graph(Coordinate); 
Graph(Coordinate, Coordinate); 
Graph(Coordinate, Coordinate, Coordinate); 

void setXSize(int); 
void setYSize(int); 

void setX(int); //int corresponds to coordinates 1, 2, or 3 
void setY(int); 
void setZ(int); 

int getXSize(); 
int getYSize(); 

double getX(int); //int corresponds to coordinates 1, 2, or 3 
double getY(int); 
double getZ(int); 

void outputGraph(); 
void animateGraph(); 


private: 
int xSize; 
int ySize; 

Coordinate coord1; 
Coordinate coord2; 
Coordinate coord3; 

}; 

Graph.cpp

#include "Graph.h" 
#include "Coordinate.h" 
#include <iostream> 
#include <ctime> 

using namespace std; 

Graph::Graph() 
{ 
Coordinate coord1(0); 
} 
Graph::Graph(Coordinate cOne) 
{ 
coord1 = cOne; 

xSize = 20; 
ySize = 20; 
} 
Graph::Graph(Coordinate cOne, Coordinate cTwo) 
{ 
coord1 = cOne; 
coord2 = cTwo; 

xSize = 20; 
ySize = 20; 
} 
Graph::Graph(Coordinate cOne, Coordinate cTwo, Coordinate cThree) 
{ 
coord1 = cOne; 
coord2 = cTwo; 
coord3 = cThree; 

xSize = 20; 
ySize = 20; 
} 

void Graph::setXSize(int size) 
{ 
xSize = size; 
} 
void Graph::setYSize(int size) 
{ 
ySize = size; 
} 

int Graph::getXSize() 
{ 
return xSize; 
} 
int Graph::getYSize() 
{ 
return ySize; 
} 

void Graph::outputGraph() 
{ 

} 
void Graph::animateGraph() 
{ 

} 

任意の助けてくれてありがとう非常に!

+0

が、それは「Coordinate.h」の「クラスグラフ」の定義を持つタイプミスですか? – Mahesh

答えて

1

クラスの中に#includeを入れます。その結果、内部クラスGraph :: Coordinateが定義され、リンカーはそれを見つけられません。 class Graphの前に#includeを移動します。

+0

ありがとう!私はそれを試みる!編集:それは動作しませんでした、別のエラーで置き換えられました:クラス座標の再定義。 – Saxophlutist

+1

複数の介入ガードを使用する必要があります。また、あなたが投稿したコードは、graph.hとcoordinate.hが同じであると思われます。おそらくgraph.hを2回投稿しました。 –

0

エラーに関するないが、あなたのコード内で -

// In Graph.cpp 
Graph::Graph() 
{ 
    Coordinate coord1(0); 
} 

オブジェクトcoord1は本当に何をやって、それがスコープ外になると死ぬされていません。あなたの意図は、グラフクラスのメンバ変数coord1を初期化することであれば、してみてください -

// In Graph.cpp 
Graph::Graph() 
{ 
    coord1 = Coordinate(0); // Nameless object 
} 

これは、後に役立つかもしれない希望:)

+0

すべての助けてくれてありがとう!私のクラスは稼動しているようだ! :) – Saxophlutist

関連する問題