读书人

请问C++重载的有关问题

发布时间: 2013-11-20 12:46:02 作者: rapoo

请教C++重载的问题
定义了模板类,
能进行冒泡排序。我现在创建了一个structure,包含了学生信息,我想使用模板类里面的函数。怎么能根据structure来重载class里面的操作符<,使的排序比大小的时候只看分数。(也就是按分数来对structure排序)。



谢谢啦O(∩_∩)O 请教C++重载的问题
[解决办法]

引用:
1>schedule.obj : error LNK2005: "void __cdecl schedule(int,int,class std::vector<int,class std::allocator<int> > &,class std::basic_ostream<char,struct std::char_traits<char> > &)" (?schedule@@YAXHHAAV?$vector@HV?$allocator@H@std@@@std@@AAV?$basic_ostream@DU?$char_traits@D@std@@@2@@Z) already defined in hwk5driver.obj
1>E:\Assignment5.exe : fatal error LNK1169: one or more multiply defined symbols found
我那个定义是对的,我发现是别处有问题,我有两个cpp,住cpp调用另一个cpp的时候总是报这种错误,我以为是我重载错了其实不是.....


这是个链接错误。比如两个cpp包含了同一个.h,而这个.h有某个函数的定义和实现,会导致这个问题。MS的编译器的话,可以在你的schedule.h最前面使用#pragma once,这样就避免多个obj包含同一个符号。或者schedule.h只有函数声明,不实现函数,在schedule.cpp里实现那个函数,也可以解决这样的链接错误。
[解决办法]
你的项目管理有点混乱,我重新修改了下,没什么问题了。
我等下把源码贴一下

读书人网 >C++

热点推荐