2013-08-26 2 views
0

Я создал класс строк, используя массив символов.Возвращаемая переменная как объект класса

Мне действительно нужно разместить этот массив вместо объекта класса. вот простой пример.

Я хочу напечатать как целое, а не B как объект класса, который не является возможным.

#include <iostream> 

class T 
{ 
    int A ; 

    public : T () 
    { 
     A = 10 ; 
    } 
} ; 

void main () 
{ 
    T B ; 
    std :: cout << B ; 
} 
  1. Возможно ли это?

  2. Хорошо, но как?

+5

'main' требуется для возврата' int'. – chris

+3

Шаги для достижения вашего требования: шаг 0: удалить шапки с самого начала каждого слова, потому что это очень раздражает. –

+1

Почему на Земле вы используете каждое слово? – jrok

ответ

4

Вам нужен оператор выходного потока:

std::ostream& operator <<(std::ostream& o, const T& t) 
{ 
    return o << t.A; 
} 

Обратите внимание, что, так как A является частным, он должен был бы быть friend из T.

0

Один метода, чтобы добавить функцию к публичной части вашего определения класса, который возвращает значение A:

class T{ 
... 
public: 
... 
int retA(){ 
    return A; 
} 
}; 

int main{ 
T B; 
cout << B.retA(); 
return 0; //This is what chris said in his comment! 
} 

Надеется, что это помогает!

+1

Обратите внимание, что хотя 'main' должен быть * объявлен * как возвращающий' int', вам фактически не нужен оператор 'return' в своем теле. В отличие от любого другого места на C++, это одно место, где есть неявное 'return 0', если вы проваливаетесь внизу. (Странно, я знаю.) – wjl

+1

@wjl: Я АБОР, что правит и хочу, чтобы все забыли это. Если у меня есть функция, которая возвращает что-то, я собираюсь явно что-то вернуть, черт побери! –

+0

@ wjl: Спасибо, что указали это. И ведь C++ всегда стремится по умолчанию возвращать значение в большинстве случаев, не так ли? – iluvthee07

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