呼呼,重载<<的有关问题。
呼呼,重载<<的问题。。求助!
我的程序的最后一部分重载<<的时候好像出现问题了!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吧
------解决方案--------------------
我的程序的最后一部分重载<<的时候好像出现问题了!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吧。
------解决方案--------------------
放到类内定义