Описание метода вложенного класса
От: Shishkin  
Дата: 13.07.06 06:29
Оценка:
Нашел тут описание подобной проблемы, но не нашел лекарства, посему спрашиваю.

Код примерно следующий:
template<class T>
class class1
{
...
  class class2
  {
    void func();
  };
...
};

template<class T>
void class1<T>::class2::func()
{
}


Борландом собирается без проблем. А вот в MSVC++ 6.0 вылазит ошибка на стадии линковки. Есть ли какое волшебное слово для побеждения сего?
Re: Описание метода вложенного класса
От: Павел Кузнецов  
Дата: 13.07.06 06:47
Оценка:
Здравствуйте, Shishkin, Вы писали:

S>Борландом собирается без проблем. А вот в MSVC++ 6.0 вылазит ошибка на стадии линковки. Есть ли какое волшебное слово для побеждения сего?


Определять функцию-член по месту:
template<class T>
class class1
{
...
  class class2
  {
    void func()
    {
    }
  };
...
};
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[2]: Описание метода вложенного класса
От: Shishkin  
Дата: 13.07.06 06:52
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>Определять функцию-член по месту


Да это, конечно, выход, но... Очень хочется чтоб все-таки определять отдельно. Некрасиво получается, если определение метода достаточно большое — там уже в описании класса заблудиться можно и все такое... Но уж если нет выхода, тогда, наверное, придется так...
Re[3]: Описание метода вложенного класса
От: Bell Россия  
Дата: 13.07.06 09:04
Оценка:
Здравствуйте, Shishkin, Вы писали:

S>Здравствуйте, Павел Кузнецов, Вы писали:


ПК>>Определять функцию-член по месту


S>Да это, конечно, выход, но... Очень хочется чтоб все-таки определять отдельно. Некрасиво получается, если определение метода достаточно большое — там уже в описании класса заблудиться можно и все такое... Но уж если нет выхода, тогда, наверное, придется так...


По-другому не получится, т.к. это особенность (баг то есть) VC6. То же самое, кстати, относится и к шаблонам функций-членов:

struct test
{
   template <class T>
   void func(T t);
};

template <class T> void test::func(T t) {}


"внешнее" определение функции тоже не пройдет.
Любите книгу — источник знаний (с) М.Горький
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.