我正在为 c++ 类编写一个 Yatzy 程序。我们应该使用 std::cout 打印不同骰子的值。我想要做的就是保存一个常量字符串,然后只保存那个常量来打印骰子,而不是使用:
std::cout << "-------\n| |\n| * |\n| |\n-------\n"
我想要一个具有该值的常量字符串并执行以下操作:
std::cout << theConstantString;
通用编程再次获胜!
-------
| |
| * |
| |
-------
我的解决方案对我来说似乎不是最理想的。这是相关代码:
YatzyIO.h
class YatzyIO
{
private:
// Define die constants
static const std::string dieOnePrint;
static const std::string dieTwoPrint;
static const std::string dieThreePrint;
static const std::string dieFourPrint;
static const std::string dieFivePrint;
static const std::string dieSixPrint;
void dieOne();
void dieTwo();
void dieThree();
void dieFour();
void dieFive();
void dieSix();
};
(那里的代码比那个多,我只是删掉了任何不相关的东西,我认为无论如何我都应该这样做)
现在,在 YatzyIO.cpp 中任何函数的实现之外:
const std::string YatzyIO::dieOnePrint = "-------\n| |\n| * |\n| |\n-------\n";
const std::string YatzyIO::dieTwoPrint = "-------\n| * |\n| |\n| * |\n-------\n";
const std::string YatzyIO::dieThreePrint = "-------\n| * |\n| * |\n| * |\n-------\n";
const std::string YatzyIO::dieFourPrint = "-------\n| * * |\n| |\n| * * |\n-------\n";
const std::string YatzyIO::dieFivePrint = "-------\n| * * |\n| * |\n| * * |\n-------\n";
const std::string YatzyIO::dieSixPrint = "-------\n| * * |\n| * * |\n| * * |\n-------\n";
最后在 YatzyIO.ccp 我有这些功能:
void YatzyIO::dieOne()
{
//output die side 1
std::cout << dieOnePrint;
}
(每个骰子+1,看起来很相似)
到目前为止,这只是我完成的 3 个实验中的第 2 个,第三个用数组替换了这些常量。我在实验 1 中评分,其中也包含此代码,我的老师说(我在这里翻译,因为我是瑞典语,所以无论翻译中丢失了什么,我很抱歉!):
“你最好使用成员变量来保存不同的骰子输出。我建议你将不同的行(形成不同的输出)保存在你的成员变量中。”
他什么意思?有更好的方法吗?我无法在头文件中初始化非整数常量。我尝试了很多不同的方式,因为老实说,我的解决方案对我来说似乎不是那么理想。