2008-10-13 3 views
0
int main() 
{ 
    HandPhone A,B; 
    A>>B;//overloading operator>> to simulate sending sms to another handphone(object) 
    return 0; 
} 

Как я могу объявить оператора istream для имитации отправки sms на другой handphone (объект)?istream operator

+0

@ ukhti - форматирование сделало бы этот вопрос довольно легким для чтения и, возможно, ответа. :-) – 2008-10-13 16:41:38

ответ

3

std::istream - класс, а не оператор. В < < и >> операторы могут быть определены для любых двух типов:

class A; 
class B; 

A operator << (A& a, const B& b) // a << b; sends b to a. 
{ 
    a.sendMessage(b); 
    return a; 
} 
7

Это как определить >> Оператор:

void operator >> (HandPhone& a, HandPhone& b) 
{ 
    // Add code here. 
} 

я установить тип возврата к мочеиспусканию, как я Не уверен, что цепочка будет иметь смысл.

Но он считается плохим дизайном (в мире C++), чтобы перегрузить операторы для выполнения случайных задач, поскольку он делает код трудным для чтения. Операторы потоковой передачи >> и < < имеют очень четкое значение, но отправка сообщения не очень похожа на потоковое, что я бы хотел использовать оператор таким образом. Я ожидал бы, что unmarshalling объект в конечном конце потока создаст объект, очень похожий на то, что было помещено в исходный конец.

Гораздо легче сделать что-то подобное.

B.sendMessageTo(A,Message("PLOP")); 
Смежные вопросы