gpt4 book ai didi

c++ - 返回特定于类的枚举

转载 作者:太空宇宙 更新时间:2023-11-04 16:13:58 25 4
gpt4 key购买 nike

我有一个要实现的简单状态机。但是,当我遇到一个奇怪的错误时:

State.cp:7:1: error: 'eState' does not name a type
eState CState::eGet(){
^

eState 是来自类 CState 的枚举器:

#ifndef __STATE_H
#define __STATE_H

#include <string>

class CState {

public:
enum eState {
eData,
eInterface,
ePresentation,
eExit
};

它(目前,非功能性)像这样返回:

private:
eState Current;

public:
estate eGet();

其中 eGet() 的定义如下:

eState CState::eGet(){

return Current;
};

我正在尝试将 .eGet() 用作开关值,但我的主要函数告诉我枚举值未“在此范围内声明”

现在很明显,我可以将枚举器移动到 "Common.h" 文件并让每个人都 #include,但它很明显属于状态类, 所以我宁愿把它放在那里。

最佳答案

枚举的作用域在类内部,但函数定义的返回类型不是。所以你需要指定范围:

CState::eState CState::eGet(){
return Current;
} // NOTE: no ; here

函数体、参数列表和尾随返回类型(如果存在)都在类范围内,因此您不需要在那里进行额外的限定。因此,从 C++11 开始,您还可以这样定义函数:

auto CState::eGet() -> eState {
return Current;
}

另外,你不应该使用 reserved names__STATE_H。它可以bite you later .

关于c++ - 返回特定于类的枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24993783/

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