【发布时间】:2015-03-14 12:50:42
【问题描述】:
我正在自学 C++。 我一直在尝试使用枚举变量创建一个类,但它会产生错误。
这是我编码的一部分。
*用于 Main() 的类
#include "Athletics.h"
enum Medal {GOLD, SILVER, BRONZE};
enum Event {100_METER_RACE, POLE_VAULT, HAMMER_THROW};
Athletics::Athletics()
{
}
Athletics::Athletics(Medal medal, Event event)
{
Medal m = medal;
Event e = event;
}
Athletics::Medal getMedal(){// produces an error, "within this context"
return Medal; //produces an error, "expected primary-expression before ';' token"
}
*上面类的头部
#ifndef ATHLETICS_H
#define ATHLETICS_H
class Athletics
{
private:
enum Medal {GOLD, SILVER, BRONZE}; //produces an error, "'enum Athletics::Medal' is private."
enum Event {100_METER_RACE, POLE_VAULT, HAMMER_THROW};
public:
Athletics();
Athletics(Medal medal, Event event);
Medal getMedal();
};
#endif
当我拒绝所有这些枚举和相关的构造函数时,一切似乎都很好。
连同一个 getter (Medal getMedal()),我想为枚举变量创建 setter 方法。
很遗憾,我的教科书显然没有说明为什么会出现这些问题。
如果您能提供任何建议,我将不胜感激。
【问题讨论】:
-
return Medal应该做什么?Medal是一种类型。 -
您的类不包含任何数据成员。它只包含一些成员 type 定义。
-
感谢您的 cmets。
return Medal应该返回Medal属性的值。我创建它是因为我在 C# 和 Java 方面有一些经验。我想像在 Java 中那样创建它,就像this.Medal一样。但是,正如您所提到的,这种方式对于 C++ 来说是错误的。 -
我的意思是
return this.Medal...这可能是我最容易理解的方式。 -
@YMD:即使在 Java 中,您也必须返回枚举的实例。 (在 Java 中,你也可以返回一个类,但我敢肯定这绝对不是你在这里谈论的内容。)
标签: c++ class constructor enums nested