C++ 如何在流运算符重载函数中使用cust或指针?

C++ 如何在流运算符重载函数中使用cust或指针?,c++,overloading,C++,Overloading,我有家长课和孩子课。它们都在重载>>运算符。我需要从文件(或屏幕)读取到父对象,然后将其转换到子对象(或使用指针)。 现在我正在使用set和get ifstream& operator>>(ifstream& ifs, Child& ch) { Parent p; ifs >> ch.field >> p; ch.setCh(p); return(ifs); } void Ch::setC

我有家长课和孩子课。它们都在重载>>运算符。我需要从文件(或屏幕)读取到父对象,然后将其转换到子对象(或使用指针)。 现在我正在使用set和get

ifstream& operator>>(ifstream& ifs, Child& ch)
{
    Parent p;       
    ifs >> ch.field >> p;
    ch.setCh(p);
    return(ifs);
}

void Ch::setCh(Parent pIn){setField1(pIn.getField1());}

在此示例中可以看到一种可能的解决方案:

#include <iostream>
using namespace std;

class A {
 public:
  int val;
  friend istream& operator>>(istream& in, A& a);
};

istream& operator>>(istream& in, A& a) {
 cout << "Calling a::>>\n";
 in >> a.val;
 return in;
}

class B : public A {
 public:
  int val2;
  friend istream& operator>>(istream& in, B& b);
};

istream& operator>>(istream& in, B& b) {
  cout << "Calling b::>>\n";
  in >> static_cast<A&>(b);
  in >> b.val2;
  return in;
}
int main(int argc, char** argv) {
  B b;
  cin >> b;
  cout << b.val << " " << b.val2 << endl;
  return 0;
}
#包括
使用名称空间std;
甲级{
公众:
int-val;
friend istream&operator>>(istream&in,A&A);
};
istream&operator>>(istream&in,A&A){
cout>a.val;
返回;
}
B类:公共A{
公众:
int val2;
friend istream&operator>>(istream&in,B&B);
};
istream&operator>>(istream&in,B&B){
cout>static_cast(b);
在>>b.val2;
返回;
}
int main(int argc,字符**argv){
B B;
cin>>b;

太感谢你了!都是些小事。我错过了静态演员表(b)中的“&”。