【发布时间】:2014-11-30 11:55:47
【问题描述】:
这是一个 C++ 代码,它很简单,但我得到了我不明白的错误。
我不知道如何使用重载的operator (),但我就是这样做的。
程序应执行以下操作。
输入您的单词:编程
n: 5
P
公关
临
程序
程序
我得到的错误:
'std::cout
Word.h
#ifndef WORD_H
#define WORD_H
class Word
{
private:
char *str;
public:
Word();
~Word();
Word operator()(int); //overloading operator ()
friend std::ostream& operator<<(std::ostream&,Word&);
friend std::istream& operator>>(std::istream&,Word&);
};
#endif
Word.cpp
#include <iostream>
#include <cstring>
#include "Word.h"
Word::Word()
{
str=new char[100];
}
Word::~Word()
{
delete[] str;
}
Word Word::operator()(int d) //overloading operator ()
{
Word pom;
strncpy(pom.str,str,d);
return pom;
}
std::ostream& operator<<(std::ostream& out,Word& s)
{
out<<s.str; return out;
}
std::istream& operator>>(std::istream& in,Word& s)
{
in>>s.str; return in;
}
main.cpp
#include<iostream>
#include "Word.h"
int main()
{
Word r;
std::cout<<"Type your word: ";
std::cin>>r;
int n;
std::cout<<"n:";
std::cin>>n;
for (int i=1; i<=n; i++) std::cout << r(i) << std::endl; //error when using r(i)
}
【问题讨论】:
-
std::ostream& operator<<(std::ostream& out,Word& s)应该是std::ostream& operator<<(std::ostream& out,const Word& s) -
谢谢。还是不行……
-
相应地更改了
friend声明?friend std::ostream& operator<<(std::ostream&,const Word&); -
是的,它现在正在工作。再次感谢您。
标签: c++ compiler-errors operator-overloading