2014-09-13 4 views
1

Для C++, с помощью визуальных команд студии приглашения (2010) в качестве компилятора, Notepad ++ как редактортипа литье символа в строку в массиве члена статической сопзЬ

У меня такой специфический вопрос, который я не могу найти ответ Я ищу в поиске, так вот:

Что касается назначения программы с некоторыми ограничениями (я не могу использовать другую переменную).
У меня есть класс Карточка со статическим массивом константных элементов, называемым «faceName» в моем неприкасаемом файле заголовка.
Я инициализирую этот массив-член в моем файле реализации с оператором присваивания и списком строковых литералов.
Вместо скучного текста «Пики» и «Сердца» и т. Д. Для имен костюмов я хочу использовать коды char ascii 3,4,5 и 6 для фактических символов.
Я не могу понять, как преобразовать переменные char в то, что может прочитать строка, а затем загрузить их в строку все в одной строке (так как константу нельзя изменить позже, и я не могу на самом деле создание гольца в основном, и должно быть сделано свободно плавающей в файле реализация.

уже много лет, так как я запрограммирован, извините за мое плохое использование лексики, если я сказал что-то неправильное.

Card.h

class Card 
{ 
    private: 
     int face; 
     int suit; 

     static const int NUM_OF_SUITS = 4; 
     static const int FACES_PER_SUIT = 13; 

     static const string suitName[NUM_OF_SUITS]; 
     static const string faceName[FACES_PER_SUIT]; 

    public: 
     string toString() const; 
} 


Card.cpp

const string Card::faceName[] = {"2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A"} 
const string Card::suitName[] = {(char)3, (char)4, (char)5, (char)6} 

string Card::toString() const 
{ 
    string nameOfCard; 
    if (suit >= 0 && suit <= NUM_OF_SUITS && face >= 0 && face <= FACES_PER_SUIT) 
    { 
     nameOfCard = faceName[face] + " of " + suitName[suit]; 
    } 
    else nameOfCard = "Error, card type doesn't exist."; 
    return nameOfCard; 
} 


и мою ошибку: card.cpp (14): ошибка C2440: 'инициализации': не может конвертировать из 'полукокса' в 'сопзЬ станд :: строка' Ни один конструктор не мог взять тип источника, или разрешение перегрузки конструктора было неоднозначным

И я не могу просто создать sstream для преобразования, потому что, где бы я это сделал? В основном - слишком поздно, мне нужно инициализировать массивы-члены в файле реализации.

Спасибо за помощь!

ответ

3

Я думаю, что вы хотите:

const string Card::suitName[] = {"\03", "\04", "\05", "\06"}; 

Но я не знаю, как это хорошая идея, потому что этот ASCII-кода, которые вы пытаетесь использовать не печатаемые символы, так как это происходит работать, когда вы печатаете их на экране?

+0

При использовании:
char a = 3; cout << a << endl;
Я получаю символ, отображающийся в командной консоли просто отлично. – Numerials

+0

Спасибо, ваш код работал безупречно! – Numerials

Смежные вопросы