2014-04-17 146 views
1

我得到所有整數和字符值的未定義符號錯誤。請幫助我。 int xyz不工作,也是函數的char值。C++未定義符號錯誤

#include <iostream.h> 
#include <conio.h> 
#include <math.h> 
#include <string.h> 

class Calculator 
{ 
    public: 
    int x; 
    int y; 
    int z; 
    char function; 

    void Calculate() 
    { 
     if(function=='+') 
     {z=x+y;} 
     else if(function=='-') 
     {z=x-y;} 
     else if(function=='*') 
     {z=x*y;} 
     else if(function=='/') 
     {z=x/y;} 
     else 
     {cout<<"Wrong Function!!!";} 
    } 
}; 

void main() 
{ 
    clrscr(); 
    Calculator working; 
    cout<<"Welcome!"<<endl; 
    cout<<"Enter your first number:"<<endl; 
    cin>>x; 
    cout<<"Enter your function:"<<endl; 
    cin>>function; 
    cout<<"Enter your second number:"<<endl; 
    cin>>y; 
    working.Calculate(); 
    cout<<"Your Result is:"<<z<<endl; 
    getch(); 
} 
+1

請張貼確切的錯誤消息。此外,它是「int main」,而不是「void main」,而不是''。 – chris

+0

是否有可能使用'namespace std;'缺少?或者其他很多'std ::'限定符? – niklasfi

+0

你確定錯誤信息是關於'x','y'和'z'嗎?當我嘗試編譯它時,我得到關於'cin'和'cout'的錯誤。 – Barmar

回答

1

您需要將值傳遞給函數Calculate。變量x,y,z和函數在類之外是不可訪問的,而且你需要函數的返回類型,以便可以從函數Calculate獲得輸出。

class Calculator 
{ 
public: 
int x; 
int y; 
int z; 
char function; 

int Calculate(int main_x,int main_y,char main_function) 
{ 
    x= main_x; 
    y=main_y; 
    function = main_function; 
    if(function=='+') 
    {z=x+y; return z;} 
    else if(function=='-') 
    {z=x-y; return z;} 
    else if(function=='*') 
    {z=x*y; return z;} 
    else if(function=='/') 
    {z=x/y; return z;} 
    else 
    {cout<<"Wrong Function!!!"; return 0;} 
} 
}; 

void main() 
{ 
    clrscr(); 
    int main_x,main_y,main_z; 
    char main_function; 

Calculator working; 
cout<<"Welcome!"<<endl; 
cout<<"Enter your first number:"<<endl; 
cin>>x; 
cout<<"Enter your function:"<<endl; 
cin>>function; 
cout<<"Enter your second number:"<<endl; 
cin>>y; 
main_z = working.Calculate(main_x,main_y,main_function); 
cout<<"Your Result is:"<<main_z<<endl; 
getch(); 
} 
3

要麼使用,std::cinstd::coutstd::endl或有性病的命名空間,

using namespace std; 
+0

@Barmar我試圖編譯代碼,它不會給x,y,z錯誤 –

2

此代碼編譯:

#include <iostream> 
#include <math.h> 
#include <string.h> 

using namespace std; 

class Calculator 
{ 
public: 
int x,y; 
float z; 
void add() 
{ 
cin>>x; 
cin>>y; 
z=x+y; 
cout<<"The addition is:"<<z<<endl; 
} 
void substract() 
{ 
cin>>x; 
cin>>y; 
z=x-y; 
cout<<"The substraction is:"<<z<<endl; 
} 
void multiply() 
{ 
cin>>x; 
cin>>y; 
z=x*y; 
cout<<"The multiplication is:"<<z<<endl; 
} 
void divide() 
{ 
cin>>x; 
cin>>y; 
z=x/y; 
cout<<"The division is:"<<z<<endl; 
} 

}; 

int main() 
{ 
cout<<"Hello User!"<<endl; 
char Name[23]; 
cout<<"Enter your name:"; 
cin>>Name; 
cout<<"Hy "<<Name<<endl; 

cout<<"Calculator:"<<endl; 
Calculator maths; 

cout<<"Enter two numbers to Add:"<<endl; 
maths.add(); 
cout<<"Enter two numbers to Substract:"<<endl; 
maths.substract(); 
cout<<"Enter two numbers to Multiply:"<<endl; 
maths.multiply(); 
cout<<"Enter two numbers to Divide:"<<endl; 
maths.divide(); 
} 

每當你使用你缺少std::預選賽cincout,或endl。在文件的開頭使用std::cout,std::cinstd::endl或包含using namespace std;

1

錯誤來了,因爲你是在試圖訪問類的成員變量X,Y,Z從外面在main(),其中X,Y,Z不宣。

爲了計算()正確工作x,y,z應該得到正確的值,在你的情況下這些變量有垃圾值。

0

這是成功編譯代碼的版本。

#include <iostream> 
#include <cmath> 
#include <cstring> 
using namespace std; 

class Calculator 
{ 
public: 
    int x; 
    int y; 
    int z; 
    char function; 

    void Calculate() 
    { 
    if(function=='+') 
     {z=x+y;} 
    else if(function=='-') 
     {z=x-y;} 
    else if(function=='*') 
     {z=x*y;} 
    else if(function=='/') 
     {z=x/y;} 
    else 
     {cout<<"Wrong Function!!!"<<endl;} 
    } 
}; 

int main() 
{ 

    Calculator working; 
    cout<<"Welcome!"<<endl; 
    cout<<"Enter your first number:"<<endl; 
    cin>>working.x; 
    cout<<"Enter your function:"<<endl; 
    cin>>working.function; 
    cout<<"Enter your second number:"<<endl; 
    cin>>working.y; 
    working.Calculate(); 
    cout<<"Your Result is:"<<working.z<<endl; 
    return 0; 
}