私は 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 つ目は、これらの const を配列に置き換えます。私はこのコードを含むラボ 1 で採点され、先生はこう言いました (私はスウェーデン人なのでここで翻訳しているので、翻訳で失われたものはすべて申し訳ありません!):
「メンバー変数を使用するのは良いことなので、別のサイコロの出力を保存します。代わりに、別の行 (別の出力を形成する) をメンバー変数に保存することをお勧めします。」
彼はどういう意味ですか?それを行うより良い方法はありますか?ヘッダー ファイル内の整数以外の定数を初期化できません。正直なところ、私のソリューションは私にとって最適ではないように思われるため、さまざまな方法を試しました。