2014-10-25 2 views
0

Я новичок в C++ и получаю сообщение об ошибке.Ошибка с набором Метод C++

В основном я иметь переменную char myName[150] и иметь метод, называемый

void setName(char myNames) { 
    this->myName = myNames; 
} 

Моя ошибка Myname [150] не равно myNames. Я думаю, что компилятор пытается сказать несовместимые типы, но я не знаю, как исправить мой код.

Кроме того, я заинтересован в сохранении двух наборов значений, несколько раз. Например, {[0,10], [5,15], [6,69]...} - я был бы прав, имея что-то вроде этого

int **d[]; /dynamic array - grows in size and not fixed 
void setValues(int a, int b){ 
    //NEED HELP WITH IMPLEMENTATION HERE 
} 

Я бы очень признателен, если кто-то может помочь мне с моими ошибками и вопросами. Я очень заинтересован в изучении этого языка C++ - мне очень нравится C++ и C, и жаль, что я узнал их как мой первый когда-либо языка программирования,

+0

Вам необходимо прекратить использование квадратных скобок и звездочек и начать использовать 'std :: string'. –

+0

@KerrekSB это должно быть char, потому что я хочу ограничить введенный пользователем вход. Я не хочу, чтобы пользователь вводил длинное имя, например, это не было убедительно – user4167396

+0

Но теперь вы всегда * платите 150 символов даже для коротких имен! Пределы, которые вы описываете, должны применяться в других местах. –

ответ

0

Компилятор говорит вам, что типы различны: myName является char[150], но myNames это char. Это назначение не работает. Возможно, вы имели в виду:

void setName(const char* name) { 
    strncpy(myName, name, sizeof(myName)); 
} 

или

std::string myName; 
void setName(const std::string& name) { 
    myName = name; 
} 

или какой-либо эквивалент.

Для второго вопроса просто используйте std::vector<std::pair<int,int> >.

+0

Возможно, он определенно не имел в виду нечто такое ужасное и бессмысленное, как строки в стиле С. – Puppy