template<class C> class MyList
{
private:
...
public:
MyList<class C>::MyList()
{
...
}
...
};
Не удается создать объект
Код:
где то в проге пишем:
Код:
...
MyList<int>* mylist = new MyList<int>();
...
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
никак не могу понять в чем проблема, указатель я могу объявить, но при создании объекта выдает ошибку, может кто знает в чем тут дело?
Цитата:
Originally posted by NetSlow
Есть шаблонный класс:
где то в проге пишем:
и программа(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<class C>::MyList()
{
...
}
...
};
{
private:
...
public:
MyList<class C>::MyList()
{
...
}
...
};
где то в проге пишем:
Код:
...
MyList<int>* mylist = new MyList<int>();
...
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()
{
...
};
...
};
{
private:
...
public:
MyList()
{
...
};
...
};
Код:
template<class C> class MyList
{
private:
...
public:
MyList();
...
};
MyList<class C>::MyList()
{
...
}
{
private:
...
public:
MyList();
...
};
MyList<class C>::MyList()
{
...
}
Цитата:
Originally posted by NetSlow
нет ну на самом деле там так:
нет ну на самом деле там так:
Код:
template<class C> class MyList
{
private:
...
public:
MyList();
...
};
MyList<class C>::MyList()
{
...
}
{
private:
...
public:
MyList();
...
};
MyList<class C>::MyList()
{
...
}
Ну так это же "две большие разницы"! В этом случае должно быть так:
Код:
template<class C> class MyList
{
private:
...
public:
MyList();
...
};
template<class C> MyList<C>::MyList()
{
...
}
{
private:
...
public:
MyList();
...
};
template<class C> MyList<C>::MyList()
{
...
}
MyList<int>* mylist = new MyList<int>();
где здесь ошибка?
Цитата:
Originally posted by NetSlow
спасибо что поправил, но как создать объект этого класса, что-то в таком роде:
MyList<int>* mylist = new MyList<int>();
где здесь ошибка?
спасибо что поправил, но как создать объект этого класса, что-то в таком роде:
MyList<int>* mylist = new MyList<int>();
где здесь ошибка?
Здесь - нигде. Это прекрасно компилится, линкуется и работает (VC6).
Ну что ж, кажется все работает, еще раз спасибо.