Chinaunix

标题: 运算符重载实现char相加 [打印本页]

作者: luoage    时间: 2014-08-27 18:32
标题: 运算符重载实现char相加
本帖最后由 luoage 于 2014-08-27 18:41 编辑

小弟今天看了c++运算符重载大感惊奇,以前被多个char类型合并搞死了,遂打算使用char + char +....实现strcat的功能......


but ....世事不尽如人意啊..
  1. #include <iostream>
  2. #include <string>
  3. using namespace std;

  4. char* operator+(const char *m,const char *t){
  5.         int len = strlen(t)+strlen(m)-1;
  6.         char *buf = new char[len];
  7.         strcpy(buf,m);
  8.         strcat(buf,t);
  9.         return buf;
  10. }

  11. int main(){
  12.         char c[] = "abc";
  13.         char c1[] = "abc";
  14.         return 0;
  15. }
复制代码
错误如下
  1. >g++ char.cpp -o char.exe
  2. char.cpp:5: `operator +(const char *, const char *)' must have an argument of cl
  3. ass or enumerated type
复制代码
求解惑




作者: 井蛙夏虫    时间: 2014-08-27 18:45
错误写得很清楚。c++标准要求运算符重载函数必须有一个参数为class、class引用、枚举或枚举引用。
作者: luoage    时间: 2014-08-27 18:47
井蛙夏虫 发表于 2014-08-27 18:45
错误写得很清楚。c++标准要求运算符重载函数必须有一个参数为class、class引用、枚举或枚举引用。



c++说所有类型都是对象啊,char不就是类吗 ?
作者: Fixend    时间: 2014-08-27 18:56
luoage 发表于 2014-08-27 18:47
c++说所有类型都是对象啊,char不就是类吗 ?

哪里说的?
作者: luoage    时间: 2014-08-27 20:15
Fixend 发表于 2014-08-27 18:56
哪里说的?


好吧,也许我被误导了
作者: bikong0411    时间: 2014-08-28 09:47
class去重载啊
作者: zhaohongjian000    时间: 2014-08-28 11:22
不说能不能实现,你的思路就不对头,应该是string + string实现strcat啊。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2