C++ 我建立了一个小的面向对象程序,我不知道为什么它不能编译
代码如下:C++ 我建立了一个小的面向对象程序,我不知道为什么它不能编译,c++,oop,C++,Oop,代码如下: #include <iostream> #include <string> using namespace std; int main(){ Oseba akk("kreso"); akk.printing(); } class Oseba{ public: string Ime; Oseba(){} Oseba(string _Ime){ Ime=_Ime; } void printing(){ cout
#include <iostream>
#include <string>
using namespace std;
int main(){
Oseba akk("kreso");
akk.printing();
}
class Oseba{
public:
string Ime;
Oseba(){}
Oseba(string _Ime){
Ime=_Ime;
}
void printing(){
cout << Ime << endl;
}
};
以下是错误:
error C2065: 'Oseba' : undeclared identifier
error C2146: syntax error : missing ';' before identifier 'akk'
error C3861: 'akk': identifier not found
error C2065: 'akk' : undeclared identifier
error C2228: left of '.Izpis' must have class/struct/union
您正在使用一个在main之后定义的类。在main之前定义类,这样可以在编译时解决错误
#include <iostream>
#include <string>
using namespace std;
class Oseba{
public:
string Ime;
Oseba(){}
Oseba(string _Ime){
Ime=_Ime;
}
void printing(){
cout << Ime << endl;
}
};
int main(){
Oseba akk("kreso");
akk.printing();
}
发现这些错误是因为函数已在主函数之前声明:
#include <iostream>
#include <string>
using namespace std;
class Oseba{
public:
string Ime;
Oseba(){}
Oseba(string _Ime){
Ime=_Ime;
}
void printing(){
cout << Ime << endl;
}
};
int main(){
Oseba akk("kreso");
akk.printing();
}
编译器不知道什么是Oseba-akkkros;是这是因为源文件是自上而下解释的
您需要在int main之前声明类,或者将类放入另一个文件中,然后包含该文件。在使用类和函数之前声明它们!在这种情况下,在main之前,最快的修复方法是将类和函数的定义移动到main之上