问题覆盖运算符<<输出cout [英] Problems override operator << for output cout

查看:72
本文介绍了问题覆盖运算符<<输出cout的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在下面写了以下代码,错误是:

Hi, I wrote the following code below the line is error :

ostream& String::operator<<(ostream& stream,const String& str){





我的代码:



my code :

#include <iostream>
#include <cstring>
using std::cout;
using std::cin;
using std::endl;
using std::ostream;
/* run this program using the console pauser or add your own getch, system("pause") or input loop */

class String{
	char *ch;
public:
	String();
	String operator=(char* ob);
	String operator+(String str);
	char * toString();
	friend ostream& operator<<(ostream& stream,const String& str);
};

String::String(){
}

String String::operator=(char* ob){
	ch=ob;
	return *this;
}

String String::operator+(String str){
	String temp;
	temp.ch=strcpy(ch,str.ch);
	return temp;
}
ostream& String::operator<<(ostream& stream,const String& str){
	stream<<str.ch;
	return stream;
}

char * String::toString(){
	return ch;
}

int main(int argc, char *argv[]) {
	String str1,str2,str3;
	str1="ehsan";
	str2="shahbakhty";
	cout<<str2;
	return 0;
}





错误编译器:

[错误]'std :: ostream& String :: operator<<(std :: ostream&,const String&)'必须只接受一个参数



error compiler :
[Error] 'std::ostream& String::operator<<(std::ostream&, const String&)' must take exactly one argument

推荐答案

您将插入运算符声明为全局(朋友函数字符串 class)然后定义为 String 成员。改变来自

You declared the insertion operator as global (friend function of String class) and then defined as String member. Change from
Quote:

ostream& String :: operator<<(ostream& stream,const String& str){

ostream& String::operator<<(ostream& stream,const String& str){

to

to

ostream& operator<<(ostream& stream,const String& str){


这篇关于问题覆盖运算符&lt;&lt;输出cout的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆