为什么我的c++编译器似乎是用c编译的
Why does my c++ compiler seem to be compiling in c
我使用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
文件,您不需要显式编译它。)
相关文章:
- 当调用switch语句中的函数时(即使函数不包含循环),似乎是永不结束的循环的问题
- 是什么原因导致它无法编译?它是声明签名还是在函数本身的实现中
- 工会成员的析构函数似乎是自动调用的
- 对GLFW / Vulkan的未定义引用,尽管库似乎是链接的
- 有一个可迭代的容器,其中的成员在编译时是已知的
- C 程序如果功能中的语句不执行.在逻辑上似乎是错误的
- 为什么没有参数的构造函数似乎是此代码的问题
- C++编译错误是由于使用 std::move 时运动构造函数与其他非运动构造函数之间的冲突
- 立方体的正态似乎是向内指向
- 对于特定情况的整数溢出似乎是由整数溢出引起的错误
- 在Stdout上似乎是僵局
- 这个逻辑似乎是正确的,但它不起作用.有没有错
- 在不同的机器上编译的是Arduino ESP8266项目的不同十六进制文件
- TMB教程中的此编译错误是什么?
- 用Deque实例化Priority_queue不会与矢量进行编译.这是为什么
- 有没有更好的方法可以使此代码线程安全?线程局部静态似乎是一个生硬的工具
- Travis CI似乎是从错误的Stdlib读书
- 我的功能似乎是正确的,但我会收到编译错误
- 为什么我的c++编译器似乎是用c编译的
- C++ 你好世界不会编译?似乎是一个链接问题...