C++ 使用枚举数据类型作为类文件中构造函数的数据类型
C++ Using an enum data type as a data type for a constructor in a class file
我定义了这个数据类型
private:
enum RankType {Rank2, Rank3, Rank4, Rank5, Rank6, Rank7, Rank8,
Rank9, Rank10, RankJack, RankQueen, RankKing, RankAce };
和这个构造函数:
public:
RankType getRank();
但是当我像这样在.cpp文件中调用它时:
RankType Card::getRank()
{
return Card.RankType;
};
我收到错误:"RankType 不命名类型。
我让你注意到RankType
只是枚举的类型(名称)。您已在类中创建了一个enum
,但没有 RankType
类型的变量(除非您没有向我们显示)。
正在返回一个类型,您认为return Card.RankType;
是什么意思?
我建议你在类之外定义枚举,如果你想将你的卡初始化为某个 RankType,你可以这样做,例如,当你在构造函数中创建新对象时。
这是您定义类的位置:
enum TypeRank {STRONG, WEAK};
class Card
{
private:
TypeRank _type_rank = STRONG; // default initialisation
public:
Card(TypeRank type_rank)
{
_type_rank = type_rank;
}
TypeRank get_rank()
{
return _type_rank;
}
};
这是你的主要.cpp
#include <iostream>
#include "Card.h"
int main(int argc, const char * argv[]) {
Card card1(STRONG); // notice that the enum TypeRank is included
// with the file 'Card.h'
// prints 0, because STRONG is represented by the integer 0!
std::cout << "This is the rank type: "<< card1.get_rank() << 'n';
return 0;
}
C++11 之前的枚举只是定义整数(常量)值的一种方式。例如,您的函数应如下所示:
RankType /* this is an integer, really */ Card::getRank()
{
return Card::RankKing; // this is just syntactic sugar for an integer value
}
enum
的成员与整数常量处于 1 对 1 的对应关系中,在您的情况下,枚举从默认值 0 开始,因此Rank2
为 0,Rank3
为 1,依此类推。
您应该创建另一个保存卡RankType
的变量,例如 RankType rank_type;
,然后使用构造时所需的类型初始化rank_type
,最后Card::getRank()
应该只返回 rank_type
。同样,只需将enum
的成员视为普通的旧数字。希望这是清楚的。
相关文章:
- 使用 Boost.Spirit 解析具有混合数据类型的 OBJ 文件?
- 我的头文件 DNode 中的我的数据类型未被识别为数据类型
- 是否可以用类似C/C++(或任何语言)的语言,从作为用户输入的字符串或文件中创建用户定义的数据类型
- 如何将数据类型声明从.cpp文件传输到 .cu 文件
- 将多种数据类型写入文件时的其他行和额外的数组元素
- 在C 中按行读取文本文件,每行都是不同的数据类型
- 当拥有倍数数据类型C 时,正确读取文件末尾的方法
- 如何将自定义数据类型(用std::对填充的std::数组)写入文件流
- 如何在文件中读取不同的数据类型?C
- C 从具有不同数据类型的文件中循环
- 哪种数据类型用于存储文件名和文件大小的使用
- 如何通过读取文件将不同数据类型的数据推送到向量中
- C++ 从文本文件数据类型读取为结构,并将数据存储在列表的向量中
- 文件中数据类型的计数(以C++为单位)
- C++具有混合分隔符和数据类型的文件输入
- 头文件中异常的数据类型和 #include
- c++我需要将文件中的数据读取到多维数组中,然后用一种数据类型对数组进行排序.怎样
- 分析位图文件时,如何替换WORD和DWORD数据类型
- RegGetValue返回的数据类型与admx文件中提到的gpo设置的数据类型不同
- 如何从文件中识别数据类型