我编写了一个小的面向对象程序,我不知道为什么它不能编译

I bulit a small oop program and I don't know why it won't compile

本文关键字:程序 面向对象 我不知道 为什么 编译 不能 一个      更新时间:2023-10-16

代码如下:

#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;
  }
};

错误如下:

<>之前'Oseba':未声明的标识符语法错误:标识符"akk"之前缺少";"没有找到"akk"标识符'akk':未声明的标识符错误C2228: left of '。Izpis必须有类/结构/联合

您正在使用一个在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();
}

您会发现这些错误,因为这些函数已在您的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();
}

编译器不知道Oseba akk("kreso");是什么。这是因为源文件是从上到下解释的。

您需要在int main()之前声明类,或者将类放入另一个文件中,然后包含该文件