Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 覆盖>&燃气轮机;派生类的运算符_C++ - Fatal编程技术网

C++ 覆盖>&燃气轮机;派生类的运算符

C++ 覆盖>&燃气轮机;派生类的运算符,c++,C++,我有一个我正在开发的程序,它要求我们为Employee类重载>>,以便在使用它时读取正确类型的Employee,因此我的主程序中有如下内容: Employee *emp; empIn >> emp; 我想基类就是我想做的,因为它是唯一适用于所有派生类的类。类型由行首的整数决定,因此我认为类似的方法可能会起作用(因为我在阅读之前不知道类型): 但是,它不起作用。我要用正确的方法来解决这个问题吗?如果没有,请给我指出正确的方向。问题似乎在于,你混淆了引用和指针。在operator>

我有一个我正在开发的程序,它要求我们为Employee类重载>>,以便在使用它时读取正确类型的Employee,因此我的主程序中有如下内容:

 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文件有一个纯粹的虚拟函数来阻止它。因此,必须重载它,以便它可以创建一个派生类的实例。