Re[6]: friend operator для шаблона : не генерируется в C++Bu
От: discretus Россия  
Дата: 11.04.04 14:03
Оценка:
Здравствуйте, 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".

Должно заработать! У меня когда-то тоже была такая проблема, мучался довольно долго. Удачи
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.