2014-04-17 106 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; 
}