为什么会收到“声明与(x)不兼容”的信息?

时间:2019-01-16 19:59:53

标签: c++ c++14

我现在正在单独的头文件和cpp文件中创建一个名为person的类。 对于其中一个功能,我遇到了这个错误:

  

该声明与“ Person :: stat Person :: getStat()”不兼容(在“ C:...”的第26行声明)

(不是确切的目录,但您知道了)

这是头文件中的代码:

baseurl

这是cpp文件中的代码:

#pragma once
#include <string>
#include <iostream>
class Person
{
public:
    struct stat {
        int str;
        int end;
        int dex;
        int intel;      
    };
    Person();
    ~Person();
    //properties
    stat getStat();
};

我在使用getStat()函数时遇到了错误。我曾尝试在两个文件中以及仅在头文件中包含string和iostream标头,因为类似的帖子建议这样做。但这两个都不能解决我的问题。

2 个答案:

答案 0 :(得分:2)

应该是

Person::stat Person::getStat() {

}

您的版本声明了与struct stat不同的新Person::stat

答案 1 :(得分:1)

struct stat Person::getStat()是一种返回属于全局命名空间而不是stat的{​​{1}}的方法:

Person

请注意,这里没有Person::stat Person::getStat() (以避免声明一个)。在C ++中,在声明类型之后,我们就不再使用struct