我正在爲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,第3部分用數組替換了這些常量。我在實驗1上進行了評分,其中也包含了這個代碼,我的老師也說過了(因爲我是瑞典人,所以我在這裏翻譯,所以無論在翻譯中丟失什麼,我都很抱歉!):
「這很好你使用成員變量來保存不同的骰子輸出,我建議你在成員變量中保存不同的行(它們構成不同的輸出)。「
他是什麼意思?有沒有更好的方法來做到這一點?我無法初始化頭文件中的非整數常量。我嘗試了一堆不同的方式,因爲老實說,我的解決方案對我來說似乎並不是最優的。
這沒有任何意義。但也許重要的是你應該使用一個數組而不是6個單獨命名的成員函數和成員變量。 –
你可以通過一個打印函數來保存代碼,它使用一個整數參數來讓你選擇要打印的字符串,但我並不十分清楚你正在問什麼 – mathematician1975
正如@OliCharlesworth所說,這沒有任何意義。但是這裏是我的問題:他說過成員變量還是類變量?因爲那些不是成員變量。 – Linuxios