Здравствуйте, Contact, Вы писали:
L_L>>Ты однако не счел нужным заметить показанный мною ЧЕТВЕРТЫЙ способ. БЦЦ у меня нет, проверить не смогу. Дело за тобой.
C>Эх, да. Я, извиняюсь, отмел его как синтаксическую ошибку постинга, ибо vc6sp5 поругался на синтаксическую ошибку
C>C>template<class T>
C>class A
C>{
C> friend operator +<T>(const A&, const A &);
C> ^
C>};
C>
C>Сейчас перепроверил в bc6 и vc7-2002, они съели.
C>thnx.
C>Зато vc6 ест обычный вариант.
C>Нда, пока получается, что без сишных макросов аля
C>C>#if bcc|vc7
C>#define _T <T>
C>#else
C>#define _T
C>#endif
C>....
C>friend operator + _T(const A&, const A &);
C>
C>не обойтись
Слушайте ребят, возможно у меня есть решение этой проблемы....
Дело в том, что шаблоны, в отличие от классов, создаются лишь при конструировании конкретных классов из шаблона, поэтому, чтобы не было ошибки "unresolved external и т.д." нужно сделать следующее:
Пояснение:
1. Эта ошибка не связана с "friend"
2. Скорее всего рассматриваемые шаблоны разнесены на два файла (.h и .cpp), верно?
3. Если да, то скорее всего вы прописываете #include "file.h" в начале .cpp?
4. Путь решения: в конце хедера прописать #include "file.сpp", а в начале .cpp убрать #include "file.h"
5. В основной программе продолжать использовать #include "file.h".
Должно заработать! У меня когда-то тоже была такая проблема, мучался довольно долго. Удачи