鱼C论坛

 找回密码
 立即注册
查看: 10415|回复: 21

关于VS2010重载运算符,大家来看看是什么问题

[复制链接]
发表于 2013-9-4 23:34:03 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 刹那芳华 于 2013-9-6 10:00 编辑
  1. #include <iostream>
  2. #include "StdAfx.h"
  3. using namespace std;

  4. template <class T>
  5. class SeqList
  6. {
  7. private:
  8. T *element;
  9. int size;
  10. int len;
  11. public:
  12. SeqList(int size = 64);
  13. SeqList(T value[],int n);
  14. ~SeqList();
  15. bool isEmpty();
  16. int length();
  17. T get(int i);
  18. bool set(int i,T x);
  19. friend ostream& operator<<(ostream& out,SeqList<T> &list);
  20. void insert(int i,T x);
  21. void insert(T x);
  22. bool remove(int i,T& old);
  23. void clear();
  24. };

  25. template <class T>
  26. ostream& operator<<(ostream& out,SeqList<T> &list)
  27. {
  28. out<<"(";
  29. if(list.len>0)
  30. {
  31. out<<list.element[0];
  32. for(int i = 1;i<list.len;i++)
  33. out<<","<<list.element[i];
  34. }
  35. out<<")\n";
  36. return out;
  37. }
复制代码
在vs2010里面,友元函数重载运算符老是通不过
      将指令添加到“StdAfx.h”或重新生成预编译头
1>SeqList.h(20): error C2143: 语法错误 : 缺少“;”(在“&”的前面)
1>          SeqList.h(25): 参见对正在编译的类 模板 实例化“SeqList<T>”的引用
1>SeqList.h(20): error C2433: “ostream”: 不允许在数据声明中使用“friend”
1>SeqList.h(20): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
1>SeqList.h(20): error C2061: 语法错误: 标识符“ostream”
1>SeqList.h(20): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
1>SeqList.h(20): error C2805: 二进制“operator <<”的参数太少
1>SeqList.h(78): error C2143: 语法错误 : 缺少“;”(在“&”的前面)
1>SeqList.h(78): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
1>SeqList.h(78): error C2086: “int ostream”: 重定义
1>          SeqList.h(20) : 参见“ostream”的声明
1>SeqList.h(78): error C2065: “out”: 未声明的标识符
1>SeqList.h(78): error C2065: “T”: 未声明的标识符
1>SeqList.h(78): error C2955: “SeqList”: 使用类 模板 需要 模板 参数列表
1>          SeqList.h(7) : 参见“SeqList”的声明
1>SeqList.h(78): error C2065: “list”: 未声明的标识符
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-9-5 08:45:54 | 显示全部楼层
VC里面可以运行,到VS2010里就不行了,求帮助!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-9-5 08:46:25 | 显示全部楼层
VC里面可以运行,到VS2010里就不行了,求帮助!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-9-5 09:03:02 | 显示全部楼层
VC里面可以运行,到VS2010里就不行了,求帮助!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-9-5 09:04:21 | 显示全部楼层
VC里面可以运行,到VS2010里就不行了,求帮助!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-9-5 09:05:05 | 显示全部楼层
VC里面可以运行,到VS2010里就不行了,求帮助!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-9-5 09:19:17 | 显示全部楼层

回帖奖励 +1 鱼币

我还没用过VS啊 感觉VISUAL C++编译器够用了啊
VS主要是给.NET准备的吧!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-9-5 15:25:54 | 显示全部楼层

不知道哪里出了问题,感觉是编译器的原因。
语法和逻辑应该都是正确的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-9-5 16:48:45 | 显示全部楼层

VC里面可以运行,到VS2010里就不行了,求帮助!自己顶!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-9-5 16:51:16 | 显示全部楼层


VC里面可以运行,到VS2010里就不行了,求帮助!自己顶!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-9-5 18:44:56 | 显示全部楼层
VC里面可以运行,到VS2010里就不行了,求帮助!自己顶!坛子里没人么?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-9-5 18:46:13 | 显示全部楼层
VC里面可以运行,到VS2010里就不行了,求帮助!自己顶!坛子里没人么?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-9-5 19:36:41 | 显示全部楼层

回帖奖励 +10 鱼币

本帖最后由 bboysky 于 2013-9-5 19:38 编辑

out也是输出用的啊?还真不知道。。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-9-6 09:05:11 | 显示全部楼层
bboysky 发表于 2013-9-5 19:36
out也是输出用的啊?还真不知道。。

和这个没关系,主要是这个编译器的问题,网上没找到解决方法
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-9-6 10:00:43 | 显示全部楼层

VC里面可以运行,到VS2010里就不行了,求帮助!自己顶!坛子里没人么?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-9-8 07:24:42 | 显示全部楼层

回帖奖励 +10 鱼币

不是很了解帮顶上去{:7_155:}
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-9-11 09:35:47 | 显示全部楼层
{:7_155:}{:7_155:}顶上去求助嘻嘻
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-9-11 10:07:54 | 显示全部楼层
靠!#include "StdAfx.h"要加在最上面好不!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-9-11 15:27:50 | 显示全部楼层
编程难 发表于 2013-9-11 10:07
靠!#include "StdAfx.h"要加在最上面好不!

和前后没关系,我试过了
就是和编译器有关
我用C-FREE编译的话,数据成员只能放在public里,符号重载没错
在VS2010里就是符号重载出错了
所以写了个display 函数来解决
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-9-11 15:28:31 | 显示全部楼层
  1.         void display(SeqList<T> &list)
  2.                 {
  3.                         for(int i=0;i<list.len;i++)
  4.                         {
  5.                                 cout<<element[i]<<",";
  6.                         }
  7.                 }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-11-6 03:11

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表