首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

呼呼,重载<<的有关问题。

2012-02-12 
呼呼,重载的问题。。求助!我的程序的最后一部分重载的时候好像出现问题了!VC居然提示说不可以使用私有变

呼呼,重载<<的问题。。求助!
我的程序的最后一部分重载<<的时候好像出现问题了!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吧
[解决办法]

C/C++ code
#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吧。
[解决办法]
放到类内定义

热点排行