2013-08-11 4 views
0

Я определил класс,C++ самостоятельно определить класс возврат

Цель: симулировать строку, но с большим количеством функциональных возможностей

class ex_char 
{ 
public: 
    ex_char(char *input):len(strlen(input)){strcpy(str,input);} 
    ...functions... 
private: 
    char *str; //where the char array is saved 
    int len; //length of the char array 
}; 

Для нормального массива символов, мы можем использовать:

char charray[10]="String"; 
cout<<charray; 

, чтобы показать содержимое массива символов

Но как я могу показать содержимое строки моего класса недвижимость на

cout<<excharray; 
+1

Оператор перегрузки '<<' –

+2

Не забудьте указать 'str' в память врага перед вызовом' strcpy' ... – 6502

+2

Вам не нужно выделять память для 'str'? Вам будет лучше использовать 'std :: string'. – juanchopanza

ответ

2

Предполагая, что вы правильно закончили функциональность (в вашем exmaple коде, вы не выделять память для str), перегрузка оператора <<, так что он может быть использован как cout<<excharray;

ostream &operator<<(ostream &os, const ex_char &my_string) 
{ 
    os << my_string.str; 
    return os; 
} 

Поскольку для доступа к некоторым частным элементам вашего класса требуется cout, вам также необходимо добавить оператора в friend.

+0

Спасибо за это, я почти забыл << override ... – Echo

+0

Чтобы это сделать, нужно добавить оператор в качестве друга в класс, чтобы он мог видеть 'str'; поместите это в частную часть класса: 'friend ostream & operator = (ostream & os, const ex_char & my_string);' – flyx

+0

@flyx Правильно, добавили его в ответ. –

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