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

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

我正在使用 geany(code::blocks 不会 运行 我的程序)作为编译器来编译一个简单的 c++ 程序 class。我在 Linux Dell Vostro 1500 上的 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.

这是 main.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

这是 class (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 文件,您不需要显式编译它。)