Noob程序员在这里,试图获得有关分配的帮助。如果有人可以帮助我弄清楚我在做错什么,那将是很好的例子。我知道rand是一个整数,默认情况下不能将其设置为等于枚举。我试图让兰特整数配对一个随机选择的枚举。很抱歉重新发布一个已经提出的问题,但是其他用户编写的其他示例也让我感到困惑。
注意:我没有将srand添加到种子随机数中,因为在我的特定作业中,不需要根据我的指导者为它添加种子,不知道为什么,只需遵循指示即可。
#include <iostream>
#include <ctime>
#include <iomanip>
using namespace std;
int main(){
enum SHIRT_COLOR { WHITE, BLACK, RED, GREEN};
int value = 0; //rand num to be generated
value = rand() % 4;
SHIRT_COLOR shirt = WHITE;
SHIRT_COLOR shirt = BLACK;
SHIRT_COLOR shirt = RED;
SHIRT_COLOR shirt = GREEN;
shirt = static_cast<SHIRT_COLOR>(value);
cout << "Random Shirt Color: " << shirt;
}
答案 0 :(得分:2)
这里有两个问题,但是它们都与rand()
没有关系。
SHIRT_COLOR shirt = WHITE;
SHIRT_COLOR shirt = BLACK;
SHIRT_COLOR shirt = RED;
SHIRT_COLOR shirt = GREEN;
在这里创建四个具有相同名称的变量。不清楚为什么要这么做。
只需为您选择的衬衫颜色一个变量即可:
SHIRT_COLOR shirt = static_cast<SHIRT_COLOR>(value);
C ++不知道如何开箱即用地打印枚举,并且您的程序也不知道这些变量/常量名称。它们仅存在于您的源代码中。
然后,大概,您在此行上收到编译错误:
cout << "Random Shirt Color: " << shirt;
根据涉及的规模,您需要自己用std::map
或switch
进行排序,或者甚至只是一系列if
/ else if
除此之外,您的方法还可以。
static_cast
很有意义。
关于srand()
,如果您必须忽略它以通过作业,这是很公平的,但是您的讲师错误声称它不应该在其中。
此外,in production code in the future you shall be using the C++11 random features,而不是古老的rand()
。在学校,您可能永远不会被教导,因为学校不会教授具有生产质量的C ++,但这是您现在或当您进入就业市场时应该研究的问题。>