呼呼,重载<<的问题。。求助!
我的程序的最后一部分重载<<的时候好像出现问题了!VC居然提示说不可以使用私有变量value,可是重载<<是已经设置成友元了啊!这是怎么回事啊?太奇怪了。。。。大虾帮忙啊!现在无法通过编译。。
#include <iostream>
#include <cstdlib>
#include <cstddef>
#include <cstring>
using namespace std;
class stringVar
{public:
stringVar(int size);
stringVar();
stringVar(const char a[]);
stringVar(const stringVar& string_object);
~stringVar();
int length() const;
void input_line(istream& ins);
friend ostream& operator <<(ostream& outs,const stringVar& the_string);
private:
char* value;
int max_length;
};
stringVar::stringVar(int size):max_length(size)
{value=new char[max_length+1];
value[0]='\0';
}
stringVar::stringVar():max_length(100)
{value=new char[max_length+1];
value[0]='\0';
}
stringVar::stringVar(const char a[]):max_length(strlen(a))
{value=new char[max_length+1];
strcpy(value,a);
}
stringVar::stringVar(const stringVar& string_object):max_length(string_object.length())
{value=new char[max_length+1];
strcpy(value,string_object.value);
}
stringVar::~stringVar()
{delete [] value;
}
int stringVar::length() const
{return strlen(value);
}
void stringVar::input_line(istream& ins)
{ins.getline(value,max_length+1);
}
ostream& operator << (ostream& outs,const stringVar& the_string)
{outs<<the_string.value;
return outs;
}
int main()
{stringVar a;
a.input_line(cin);
cout<<a;
return 0;
}
[解决办法]
程序没问题~~
[解决办法]
扔掉VC6.0吧
[解决办法]
#include <iostream>#include <cstdlib>#include <cstddef>#include <cstring>using namespace std;class stringVar{ public: stringVar(int size); stringVar(); stringVar(const char a[]); stringVar(const stringVar& string_object); ~stringVar(); int length() const; void input_line(istream& ins); friend ostream& operator <<(ostream& outs,const stringVar& the_string);private: char* value; int max_length;};stringVar::stringVar(int size):max_length(size){ value=new char[max_length+1]; value[0]='\0';}stringVar::stringVar():max_length(100){ value=new char[max_length+1]; value[0]='\0';}stringVar::stringVar(const char a[]):max_length(strlen(a)){ value=new char[max_length+1]; strcpy(value,a);}stringVar::stringVar(const stringVar& string_object):max_length(string_object.length()){ value=new char[max_length+1]; strcpy(value,string_object.value);}stringVar::~stringVar(){ delete [] value;}int stringVar::length() const{ return strlen(value);}void stringVar::input_line(istream& ins){ ins.getline(value,max_length+1);}ostream& operator << (ostream& outs,const stringVar& the_string){ outs<<the_string.value; return outs;}int main(){ stringVar a; a.input_line(cin); cout<<a; system("pause"); return 0;}
[解决办法]
没问题,你的vc6.0不行,装个sp6补丁吧。
用VS2008吧。
[解决办法]
放到类内定义