gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 06:12:44 26 4
gpt4 key购买 nike

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

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

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

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

我的代码如下。谁能告诉我是否可以将枚举声明为类成员,并且可以被 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_ */

最佳答案

您在全局范围内声明了您的enum TStatus。您不能通过 check::ok 访问它。它必须在您的类(class)中声明。

访问它的一种方法是
if (object.getStatus() == ok),另一个
if (object.getStatus() == TStatus::ok) 需要 C++11 枚举类

最好将它移到您的类(class)中,因为 ok 可能在其他地方有所不同。

关于c++ - check.cpp 文件无法识别在 check.h 文件中声明的枚举 TStatus,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30936449/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com