C++ 覆盖>&燃气轮机;派生类的运算符
我有一个我正在开发的程序,它要求我们为Employee类重载>>,以便在使用它时读取正确类型的Employee,因此我的主程序中有如下内容:C++ 覆盖>&燃气轮机;派生类的运算符,c++,C++,我有一个我正在开发的程序,它要求我们为Employee类重载>>,以便在使用它时读取正确类型的Employee,因此我的主程序中有如下内容: Employee *emp; empIn >> emp; 我想基类就是我想做的,因为它是唯一适用于所有派生类的类。类型由行首的整数决定,因此我认为类似的方法可能会起作用(因为我在阅读之前不知道类型): 但是,它不起作用。我要用正确的方法来解决这个问题吗?如果没有,请给我指出正确的方向。问题似乎在于,你混淆了引用和指针。在operator>
Employee *emp;
empIn >> emp;
我想基类就是我想做的,因为它是唯一适用于所有派生类的类。类型由行首的整数决定,因此我认为类似的方法可能会起作用(因为我在阅读之前不知道类型):
但是,它不起作用。我要用正确的方法来解决这个问题吗?如果没有,请给我指出正确的方向。问题似乎在于,你混淆了引用和指针。在
operator>
函数中,您接收emp
作为参考,但将其作为指针访问,这是错误的
为了使整个过程正常工作,需要在尝试输入对象之前分配emp
对象。您不能在函数内部分配它
Employe emp;
empIn >> emp;
或
当然,不要在函数中使用new
Employe emp;
empIn >> emp;
编译器应该在这方面给你很多错误,你应该先看看他们说了什么。问题似乎是你混合了引用和指针。在
operator>
函数中,您接收emp
作为参考,但将其作为指针访问,这是错误的
为了使整个过程正常工作,需要在尝试输入对象之前分配emp
对象。您不能在函数内部分配它
Employe emp;
empIn >> emp;
或
当然,不要在函数中使用new
Employe emp;
empIn >> emp;
编译器应该给你很多错误,你应该先看看他们说了什么。如果你想像你的示例用法那样分配给指针,你的istream函数的第二个参数应该是
Employee*&emp
。然后,该类型将是对指针的引用,这使您可以按照自己的意愿分配它,而不是按照方法分配。如果您希望能够按照示例用法分配指针,则istream函数的第二个参数应该是Employee*&emp
。然后,该类型将是对指针的引用,该指针允许您按照您想要的方式来分配它,而不是方法。当您说“它不工作”时,您的意思是什么?应该是Employee*&emp
它不工作,它不会工作compile@K-巴洛,谢谢你是个救生员。我无法找到我生命中的缺失。把它放在一个答案中,我会接受它作为最好的答案。你说“它没有”是什么意思?应该是Employee*&emp
它不起作用,它不会compile@K-巴洛,谢谢你是个救生员。我无法找到我生命中的缺失。把它放在一个答案中,我会接受它作为最佳答案。我确实检查了错误,它只说“=”没有运算符与这些操作数匹配。我没有做Employee*emp=newemployee的原因是我们的教授给我们的.h文件有一个纯粹的虚拟函数来阻止它。因此,它必须重载,以便它可以创建一个派生类的实例。我检查了错误,它只说“=”没有运算符与这些操作数匹配。我没有做Employee*emp=newemployee的原因是我们的教授给我们的.h文件有一个纯粹的虚拟函数来阻止它。因此,必须重载它,以便它可以创建一个派生类的实例。