首页 > 解决方案 > 在多个头文件中使用枚举状态的问题

问题描述

我想有一个枚举类,它的对象在我的程序的头文件中声明。我需要在程序期间多次修改状态,但它不允许我这样做。当我运行程序时,它说枚举类存在多重定义错误。

我将对象更改为静态并且程序可以工作(静态组合状态;),但在尝试将状态分配给其他东西时,它并没有改变状态。在另一个 cpp 文件中,我尝试以这种方式修改状态(状态 = 组合::HIGHCARD)

#ifndef POKER_H_
#define POKER_H_

enum class combinations {
    HIGHCARD, ONEPAIR, TWOPAIRS, THREEOFAKIND, STRAIGHT,
    FLUSH, FULLHOUSE, FOUROFAKIND, STRAIGHTFLUSH, ROYALEFLUSH
};
 combinations state;

void shuffle(int[][13]);
void assign(const char *[], const char *[], int[][13], const char *[], const char *[]);
int deal(const char *[], const char *[], const char *[]);
void printHand(const char *[], const char *[]);
void printWinningMassege(const int, const int, combinations, combinations);
bool isRoyalFlush(const char *[], const char *[], const char *[]);
int isStraightFlush(const char *[], const char *[], const char *[]);
int isFourOfaKind(const char *[], const char *[]);
int isFullHouse(const char *[], const char *[]);
int isFlush(const char *[], const char *[], const char *[]);
int isStraight(const char *[], const char *[]);
int isThreeOfaKind(const char *[], const char *[]);
int isTwoPair(const char *[], const char *[]);
int isPair(const char *[], const char *[]);
int isHighCard(const char *[], const char *[], const char *[]);

#endif // !POKER_H

Severity    Code    Description Project File    Line    Suppression State
Error   LNK2005 "enum combinations state" (?state@@3W4combinations@@A) already defined in Poker.obj PokerDeals  C:\Users\BoB\source\repos\PokerDeals\main.obj   1

标签: c++

解决方案


推荐阅读