2015-03-28 2 views
0

Я пытаюсь закончить свою лабораторию, однако я не знаю, как выделить память для строки. Поэтому я продолжаю получать ошибку warning: ‘_name’ is used uninitialized in this function [-Wuninitialized]Как перегрузить cin и использовать getline

Я также не понимаю, если моя линия getline верна.

std::istream& operator>>(std::istream& is, Grade& RO){ 
    int _mark; 
    char* _name; 

    std::cout<<"Subject name: "; 
    is.ignore(); 
    is.getline(_name, (strlen(_name) + 1)); 

    std::cout<<"Mark :"; 
    is>> _mark; 

    RO=Grade(_name, _mark); 
return is; 
} 
+0

Используйте 'std :: string', а не' char * '. – emlai

+1

И уделять больше внимания в классе. –

+0

Измените '_name' на' std :: string' и используйте 'std :: getline()' вместо 'is.getline()'. –

ответ

0

Ok @Jessica (на общий вопрос и несколько информации) Я думаю,

Grade класс с двумя членами данных: int mark и string name. И вы хотите перегрузить оператор ввода >>, чтобы заполнить эти значения.
(я рекомендую оставить вне выражения cout вне этой функции).
Вот одна из возможных реализаций:

istream& operator>> (istream& is, Grade& RO){ 
    // declare local variables to insert the input values 
    int mark; 
    string name; 
    // extract values from input stream 
    is >> mark >> name; 
    // assuming you have member functions that set values for the object RO 
    RO.set_mark(mark); 
    RO.set_name(name); 

return is; 
} 
Смежные вопросы