为什么我的c++编译器似乎是用c编译的

Why does my c++ compiler seem to be compiling in c

本文关键字:编译 似乎是 我的 c++ 编译器 为什么      更新时间:2023-10-16

我使用geany(代码::blocks不会运行我的程序)作为编译器,用一个类编译一个简单的c++程序。我使用的是戴尔Vostro 1500上的Linux Mint 17。编译两个.cpp文件都很好,但头文件给出了以下错误:

gcc -Wall "Morgan.h" (in directory: /home/luke/Documents/Coding/Intro#2)
Morgan.h:5:1: error: unknown type name ‘class’
class Morgan
^
Morgan.h:6:1: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘{’ token
{
^
Compilation failed.

这是主.cpp:

#include <iostream>
#include "Morgan.h"
using namespace std;
int main()
{
    Morgan morgObject;
    morgObject.sayStuff();
   return 0;
}

这是头文件(Morgan.h):

#ifndef MORGAN_H
#define MORGAN_H

class Morgan
{
    public:
        Morgan();
        void sayStuff();
    protected:
    private:
};
#endif // MORGAN_H

这是类(Morgan.cpp):

#include <iostream>
#include "Morgan.h"
using namespace std;
Morgan::Morgan()
{
}
void Morgan::sayStuff(){
    cout << "Blah Blah Blah" << endl;
}

我真的不知道出了什么问题,所以任何帮助都将不胜感激。我将相同的代码复制并粘贴到windows编译器中,它运行良好,所以它可能只是linux。

此外,当我运行main.cpp时,会显示以下内容:"./geany_run_script.sh:5:./geany_run_script.sh:./main:未找到"

您不编译.h文件。尝试g++ -Wall main.cpp Morgan.cpp

您的问题是使用C编译器(GCC)编译C++代码。您要查找的命令是g++。编译代码的完整命令是:

g++ -Wall -o run.me main.cpp Morgan.cpp

如果包含一个文件(在您的情况下是Morgan.h文件,您不需要显式编译它。)