check.cpp 文件无法识别在 check.h 文件中声明的枚举 TStatus

Posted

技术标签:

【中文标题】check.cpp 文件无法识别在 check.h 文件中声明的枚举 TStatus【英文标题】:check.cpp file can not recognise enum TStatus, declared in check.h file 【发布时间】:2015-06-19 10:58:46 【问题描述】:

    我在 check.h 文件中将枚举文件声明为我的类的公共成员,但问题出在 check.cpp 文件中,我使用了返回类型为枚举的函数 TStatus check::getStatus()。无法解析 TStatus。

    通过将 enum 声明为全局变量来解决问题,并在 check.cpp 和 check.h 文件中解决问题。

    现在我使用了一个函数,该函数需要使用枚举中的值检查 TStatus check::getStatus() 的返回值。

    这个新函数无法识别枚举,因为它不是类的成员。

我的代码如下。请任何人告诉我是否可以将枚举声明为类成员,并且可以通过 check.cpp 文件识别。或者有其他方法可以解决问题。

这是 CHECK.CPP 文件

#include <iostream>
#include "check.h"
using namespace std;


    check::check()  

    TStatus check::getStatus()
    
       return ok;
    

    void check::print()
    

        check object;

        if(object.getStatus() == TStatus::ok) cout<<"ok"<<endl;
        if(object.getStatus() == TStatus::sold) cout<<"sold"<<endl;
        if(object.getStatus() == defect) cout<<"defect"<<endl;

    


    check::~check()  

这是 CHECK.H 文件

#ifndef CHECK_H_
#define CHECK_H_

class check 
private:
    enum TStatus   ok,sold,defect  ;

public:

    check();
    ~check();
    TStatus getStatus();
    void print();

;

#endif /* CHECK_H_ */

【问题讨论】:

你没有在你的类中声明枚举,为什么要使用check::来访问它们? 【参考方案1】:

您在全局范围内声明了您的 enum TStatus。您无法通过check::ok 访问它。它必须在你的类中声明。

一种访问方式是if (object.getStatus() == ok),另一种是if (object.getStatus() == TStatus::ok) C++11 enum class

最好将它移到你的班级中,因为 ok 可能会在其他地方有所不同。

【讨论】:

非常感谢,当我输入 if (object.getStatus() == ok) 时,它没有显示任何错误。但是,如果我输入 if(object.getStatus() == TStatus::ok) 它会显示此错误。 -->>‘TStatus’不是类或命名空间 我想把它移到里面,但是如果我这样做了,我会得到这个错误。这一行有多个标记 - 'TStatus' 没有命名一个类型 - 类型'TStatus' 无法解析 -未找到成员声明 - 没有返回,在返回非 void 的函数中 @rashedazad 你能用新的类定义更新你的问题吗? @Blacktempel 嗨,我用枚举作为私有类成员更新了这个问题。并且错误是此行的多个标记-“TStatus”没有命名类型-无法解析类型“TStatus”-找不到成员声明-没有返回,在函数中返回非 void @rashedazad check::TStatus check::getStatus()

以上是关于check.cpp 文件无法识别在 check.h 文件中声明的枚举 TStatus的主要内容,如果未能解决你的问题,请参考以下文章

运行测试时如何考虑依赖关系? [关闭]

括弧匹配检验(check.cpp)

Qt - DLL相关问题

这个标题怎么看?

如何在 gn 中包含共享库

编译器无法识别实现文件中的类成员函数类型但在接口文件中识别