
Опытный
 
Профиль
Группа: Участник
Сообщений: 725
Регистрация: 14.8.2005
Где: Москва
Репутация: нет Всего: 9
|
Создаю шаблон класса: | Код | template <typename tname,typename tvalue,typename tsize> class object { private: tname name; //Имя объекта tvalue value; //Велечина tsize size; //Размерность велечины public: object(tname name,tvalue value,tsize size) { set(name,value,size); } object() { } void set(tname name,tvalue value,tsize size) { this->name=name; this->value=value; this->size=size; } friend ostream & operator<<(ostream & out, object<tname,tvalue,tsize> & obj); bool operator<(object<tname,tvalue,tsize> & obj) { if (size!=obj.size) return (size<obj.size); else return (value<obj.value); } };
|
Пишу функцию: | Код | template <typename tname,typename tvalue,typename tsize> ostream & operator<<(ostream & out, object<tname,tvalue,tsize> & obj) { if (obj.size>0) out<<"Name="<<obj.name<<"; Value="<<obj.value<<"e+"<<obj.size<<"\t\t"; else out<<"Name="<<obj.name<<"; Value="<<obj.value<<"e"<<obj.size<<"\t\t"; return out; }
|
Инициализирую массивы классов и пытаюсь их напечатать: | Код | int main() { //Инициализация //Статически object<string,double,int> Physics[] = { object<string,double,int> ("P",10.1,5), object<string,double,int> ("T",300,1), object<string,double,int> ("V",6.51,3), object<string,double,int> ("M",6.2,-2), }; //Динамически object<int,int,double> *Math; Math = new object<int,int,double>[n]; Math[0].set(1,10,1.5); Math[1].set(2,12,1.7); Math[2].set(3,14,2.3); Math[3].set(4,16,1.2);
print< object<string,double,int>,object<int,int,double> >(Physics,Math,"Input"); return 0; }
|
Получаю 2 ошибки линка (привожу одну из них, вторая аналогичная, видимо для второго параметра): | Код | 1>main.obj : error LNK2019: unresolved external symbol "class std::basic_ostream<char,struct std::char_traits<char> > & __cdecl operator<<(class std::basic_ostream<char,struct std::char_traits<char> > &,class object<int,int,double> &)" (??6@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@AAV01@AAV?$object@HHN@@@Z) referenced in function "void __cdecl print<class object<class std::basic_string<char,struct std::char_traits<char>, class std::allocator<char> >,double,int>,class object<int,int,double> >(class object <class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >, double,int> * const,class object<int,int,double> * const,class std::basic_string<char, struct std::char_traits<char>,class std::allocator<char> >)" (??$print@V?$object@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D @2@@std@@NH@@V?$object@HHN@@@@YAXQAV?$object@V?$basic_string@DU?$ char_traits@D@std@@V?$allocator@D@2@@std@@NH@@QAV?$object@HHN@@V?$basic_string@DU?$ char_traits@D@std@@V?$allocator@D@2@@std@@@Z)
|
З.Ы. VS2008 Это сообщение отредактировал(а) DragonFire - 8.4.2009, 21:56
|