Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Не удается создать объект

8.0K
14 июля 2005 года
NetSlow
18 / / 28.02.2005
Есть шаблонный класс:
Код:
template<class C> class MyList
{
private:
  ...
public:
  MyList<class C>::MyList()
  {
    ...
  }
  ...
};

где то в проге пишем:
 
Код:
...
MyList<int>* mylist = new MyList<int>();
...

и программа(Visual Studio 2003) выдает такую ошибку:
error LNK2019: unresolved external symbol "public: __thiscall MyList<int>::MyList<int>(void)" (??0?$MyList@H@@QAE@XZ) referenced in function _main
Debug/Frames.exe : fatal error LNK1120: 1 unresolved externals

никак не могу понять в чем проблема, указатель я могу объявить, но при создании объекта выдает ошибку, может кто знает в чем тут дело?
1.8K
14 июля 2005 года
_const_
229 / / 26.11.2003
Цитата:
Originally posted by NetSlow
Есть шаблонный класс:
Код:
template<class C> class MyList
{
private:
  ...
public:
  MyList<class C>::MyList()
  {
    ...
  }
  ...
};

где то в проге пишем:
 
Код:
...
MyList<int>* mylist = new MyList<int>();
...

и программа(Visual Studio 2003) выдает такую ошибку:
error LNK2019: unresolved external symbol "public: __thiscall MyList<int>::MyList<int>(void)" (??0?$MyList@H@@QAE@XZ) referenced in function _main
Debug/Frames.exe : fatal error LNK1120: 1 unresolved externals

никак не могу понять в чем проблема, указатель я могу объявить, но при создании объекта выдает ошибку, может кто знает в чем тут дело?



Непонятно, как такое вообще компилится. Должно же быть:

Код:
template<class C> class MyList
{
private:
  ...
public:
  MyList()
  {
    ...
  };
  ...
};
8.0K
14 июля 2005 года
NetSlow
18 / / 28.02.2005
нет ну на самом деле там так:
Код:
template<class C> class MyList
{
private:
  ...
public:
  MyList();
  ...
};
MyList<class C>::MyList()
  {
    ...
  }
1.8K
14 июля 2005 года
_const_
229 / / 26.11.2003
Цитата:
Originally posted by NetSlow
нет ну на самом деле там так:
Код:
template<class C> class MyList
{
private:
  ...
public:
  MyList();
  ...
};
MyList<class C>::MyList()
  {
    ...
  }



Ну так это же "две большие разницы"! В этом случае должно быть так:

Код:
template<class C> class MyList
{
private:
  ...
public:
  MyList();
  ...
};
template<class C> MyList<C>::MyList()
  {
    ...
  }
8.0K
14 июля 2005 года
NetSlow
18 / / 28.02.2005
спасибо что поправил, но как создать объект этого класса, что-то в таком роде:
MyList<int>* mylist = new MyList<int>();
где здесь ошибка?
1.8K
14 июля 2005 года
_const_
229 / / 26.11.2003
Цитата:
Originally posted by NetSlow
спасибо что поправил, но как создать объект этого класса, что-то в таком роде:
MyList<int>* mylist = new MyList<int>();
где здесь ошибка?



Здесь - нигде. Это прекрасно компилится, линкуется и работает (VC6).

8.0K
14 июля 2005 года
NetSlow
18 / / 28.02.2005
Ну что ж, кажется все работает, еще раз спасибо.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог