friend and templates
От: Аноним  
Дата: 17.03.06 19:41
Оценка:
Доброго времени суток. Подскажите плз как сделать чтобы дружественная функция могла принимать/возвращать в качестве аргумента объект параметризованого класса?

e.g.

template <class T> class A
{
private:
    
    T a;
    T b;
    
public:

    A();
    A(T aa, T bb);
    
    friend std::ostream& operator<< (std::ostream& os, A<T>& t);
};

template <class T> std::ostream& operator<< (std::ostream& os, A<T>& t)
{
    os << t.a << std::endl << t.b;
    return os;
}


При линковке выдается сообщение об ошибке:

gcc 3.4.2:
undefined reference to `operator+(int, A<int>&)'

VC2003:
unresolved external symbol "int __cdecl operator+(int,class A<int> &)"


Если же реализовать фукцию operator<< сразу же в теле класса, то ни каких проблем. В чем моя ошибка?

Заранее благодарен.

Раскраска синтаксиса: тэг [ccode] вместо [code] — Кодт
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.