2012-04-29 8 views
5
 
aludra.usc.edu(25): g++ -o final.out final.cpp 
Undefined      first referenced 
symbol        in file 
data::Get_Networth()    /var/tmp//ccUz9c59.o 
data::Set_Networth(double)   /var/tmp//ccUz9c59.o 
data::Get_Heightfeet()    /var/tmp//ccUz9c59.o 
data::Get_Lettergpa()    /var/tmp//ccUz9c59.o 
data::Set_Weight(int)    /var/tmp//ccUz9c59.o 
data::Get_Weight()     /var/tmp//ccUz9c59.o 
data::Get_Major()     /var/tmp//ccUz9c59.o 
data::Set_Gpa(double)    /var/tmp//ccUz9c59.o 
data::Get_GPA()      /var/tmp//ccUz9c59.o 
data::Set_Age(int)     /var/tmp//ccUz9c59.o 
data::Get_Age()      /var/tmp//ccUz9c59.o 
data::Set_Major(std::basic_string, std::allocator    >)/var/tmp//ccUz9c59.o 
data::Set_Data(std::basic_string, std::allocator >,  int, int, int, double, std::basic_string, std::allocator >, double)/var/tmp//ccUz9c59.o 
data::Get_Heightfeetremainder()  /var/tmp//ccUz9c59.o 
data::Set_Heightinches(int)   /var/tmp//ccUz9c59.o 
data::data()      /var/tmp//ccUz9c59.o 
data::Get_Name()     /var/tmp//ccUz9c59.o 
data::Get_Heightinches()   /var/tmp//ccUz9c59.o 
ld: fatal: Symbol referencing errors. No output written to final.out 
collect2: ld returned 1 exit status 

これは、Solarisでコンパイルするときにg ++で取得し続けるものです。 コードはVS2010で完全にコンパイルされます。だから私は何がうまくいかないのか分からない。ここでg ++でコンパイルするとシンボル参照エラーが発生するのはなぜですか?

は私のクラスファイルのコード data.hです:

#include <string> 


using namespace std; 
class data{ 
private: 
string name; 
int age; 
int heightinches, heightfeet ,heightfeetremainder; 
int weight; 
double gpa; 
char lettergpa; 
string major; 
double networth; 


public: 
//constructors 
data(); 
//service functions 
void Calc_heightfeet(); 
void Calc_lettergpa(); 
//Getter/Accessor functions 
string Get_Name(); 
int Get_Age(); 
int Get_Heightinches(); 
int Get_Heightfeet(); 
int Get_Heightfeetremainder(); 
int Get_Weight(); 
double Get_GPA(); 
char Get_Lettergpa(); 
string Get_Major(); 
double Get_Networth(); 
//Setter/modifier functions 
void Set_Data(string ,int , int ,int , double,string,double); 
void Set_Age(int); 
void Set_Heightinches(int); 
void Set_Weight(int); 
void Set_Major(string); 
void Set_Gpa(double); 
void Set_Networth(double); 
}; 

data.cpp:

#include "data.h" 
using namespace std; 


//constructors 
data::data(){;} 
//service functions 
void data::Calc_heightfeet() 
{ 
    heightfeet= heightinches/12; 
    heightfeetremainder= heightinches%12; 
} 
void data::Calc_lettergpa() 
{ 
    if (gpa > 3.5) 
      lettergpa= 'A'; 
    else if (gpa > 2.5) 
      lettergpa= 'B'; 
    else if (gpa > 1.5) 
      lettergpa= 'C'; 
    else if (gpa > .5) 
      lettergpa= 'D'; 
    else 
      lettergpa= 'F'; 
} 
//Getter/Accessor functions 
string data::Get_Name() 
{ 
    return name; 
} 
int data::Get_Age() 
{ 
    return age; 
} 
int data::Get_Heightinches() 
{ 
    return heightinches; 
} 
int data::Get_Heightfeet() 
{ 
    return heightfeet; 
} 
int data::Get_Heightfeetremainder() 
{ 
    return heightfeetremainder; 
} 
int data::Get_Weight() 
{ 
    return weight; 
} 
double data::Get_GPA() 
{ 
    return gpa; 
} 
char data::Get_Lettergpa() 
{ 
    return lettergpa; 
} 
string data::Get_Major() 
{ 
    return major; 
} 
double data::Get_Networth() 
{ 
    return networth; 
} 

//Setter/modifier functions 
void data::Set_Data(string n,int a, int h,int w, double g,string m,double net) 
{ 
    name=n; 
    age=a; 
    heightinches=h; 
    weight=w; 
    major=m; 
    networth=net; 
    gpa=g; 
    Calc_heightfeet(); 
    Calc_lettergpa(); 
} 
void data::Set_Age(int a) 
{ 
    age=a; 
} 
void data::Set_Heightinches(int h) 
{ 
    heightinches=h; 
    Calc_heightfeet(); 
} 
void data::Set_Weight(int w) 
{ 
    weight=w; 
} 
void data::Set_Major(string m) 
{ 
    major=m; 
} 
void data::Set_Gpa(double g) 
{ 
    gpa=g; 
    Calc_lettergpa(); 
} 
void data::Set_Networth(double net) 
{ 
    networth=net; 
} 

任意の助けいただければ幸いです。

答えて

7

data.cppをコンパイルまたはリンクしていないようです。試してみてください

g++ -o final.out final.cpp data.cpp 
+0

はい!ありがとうございました! :facepalm: – luca992

+0

@ user1363742あなたの顔を隠す前に、あなたがプログラムをコンパイルするのに使ったコマンドとすべての出力を投稿するためのクレジットを与えてください。 –

+0

@ user1363742:好きな、または役に立つと思われる回答をチェックすることで、あなたの評判を高めることを忘れないでください。 –

関連する問題