首页 > 解决方案 > MS Visual Studio 错误消息 E0147 中的 C++ 头文件

问题描述

作为一名初级程序员,我正在学习 C++ 编程的基础知识,包括头文件的创建。我正在关注教授在 Youtube 上的讲座,并重新创建了相同的代码结构来存储下面的类整数。我收到以下类行的编译错误消息。

错误(活动)E0147 声明与“int MyInteger::get() const”不兼容

#include<iostream>

class MyInteger
{
    private:
        int i;
    public:

void set(int);

int get() const;
};

void MyInteger::set(int a)
{
    i = a;
}

void MyInteger::get() const
{
return i;
};


int main() {

    std::cout << "Hello, world!\n";

    std::cin.get();
}

标签: c++compiler-errors

解决方案


您的错误来自编辑器,它声明int MyInteger::get() const声明与类中的声明不兼容。这是真的,因为在类中,您的get()方法被声明为,

int get() const;

但在您的定义中,它的返回类型设置为void,

void MyInteger::get() const
{
    return i;
};

这是错误。要修复它,请将返回类型定义为int,

int MyInteger::get() const
{
    return i;
} // You dont need a semicolon here.

附加:
MSVC 中有 3 种类型的错误消息,

  1. 以“E”开头的错误表明它来自编辑器。
  2. 以“C”开头的错误表明它来自编译器(编译时)。
  3. 以“L”开头的错误表明它来自链接器。

推荐阅读