Я пишу программу Yatzy для класса C++. Мы должны печатать значение разных кубиков, используя 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 за каждый умирает, и он похож)
Это только лаборатория 2 из 3, которую я закончил до сих пор, третий заменяет эти константы массивами. Я был оценен в лаборатории 1, в которой также содержится этот код, и мой учитель сказал (и я переводил сюда, так как я шведский, так что потеряно в переводе, извините!):
«Это хорошо что вы используете переменную-член, чтобы сохранить результат разных костей. Я предлагаю вам сохранить разные строки (которые образуют другой вывод) в ваших переменных-членах ».
Что он имеет в виду? Есть ли лучший способ сделать это? Я не могу инициализировать нецелые константы в файле заголовка. Я пробовал кучу по-другому, потому что, честно говоря, мое решение кажется мне не таким оптимальным.
Это не имеет никакого смысла. Но, возможно, дело в том, что вы должны использовать массив, а не 6 индивидуально именных функций-членов и переменных-членов. –
Вы можете сохранить код, имея одну функцию печати, которая принимает целочисленный аргумент, чтобы вы могли выбрать строку для печати, но я не совсем понимаю, что именно вы задаете именно. – mathematician1975
Как сказал @OliCharlesworth, это не имеет смысла. Но вот мой вопрос к вам: он сказал переменную-член или переменную класса? Потому что они не являются переменными-членами. – Linuxios