【发布时间】:2011-11-22 22:57:04
【问题描述】:
对不起标题,我不知道如何措辞。基本上我有一个指向形状对象的空指针,当输入一些输入时,我希望它们成为这个形状对象的值;
shape *s = (shape *) 0;
cin >> *s;
if (s)
cout << "Shape" << (*s) << '\n';
else if (! cin.bad())
cout << "Read reached EOF\n";
else
cout << "Read failed\n";
我已经像这样重载了
std::ostream& operator<< (std::ostream &os, shape &s){
s.draw();
return os;
}
我正在努力将我的值读入指针。我的数据的输入类型是这样的;
< Circle: (3,1) 1 >
我已经重载了 >> 操作符;
std::istream& operator>> (std::istream &is, shape &s){
char lessthan, greaterthan, opbrkt, clsbrkt, comma;
string shape_type;
double x1, y1, r, x2, y2, x3, y3;
if (is >> lessthan) {
if ('<' != lessthan) {
is.setstate(ios::badbit);
return is;
}
//Circle implemntation
if(is >> shape_type && shape_type == "Circle:"){
if(!((is >> opbrkt) && (opbrkt = '('))) {
is.setstate(ios::badbit);
return is;
}
cout << "Yes" << i++;
if(!(is >> x1)){
is.setstate(ios::badbit);
return is;
}
if(!(is >> comma && comma == ',')){
is.setstate(ios::badbit);
return is;
}
if(!(is >> y1)){
is.setstate(ios::badbit);
return is;
}
if(!(is >> clsbrkt && clsbrkt == ')')) {
is.setstate(ios::badbit);
return is;
}
if(!(is >> r)){
is.setstate(ios::badbit);
return is;
}
if(!(is >> clsbrkt && clsbrkt == '>')) {
is.setstate(ios::badbit);
return is;
}
}
return is;
}
return is;
}
这基本上表明它是一个圆圈并将相关的变量放入变量中以供以后使用,但是我如何将这些数据放入's'指针以指向现在应该是一个圆圈对象?
【问题讨论】:
标签: c++ pointers operator-overloading