【发布时间】:2014-02-23 23:12:51
【问题描述】:
我有我的基类 Gate,而派生类是 AND(XOR 等)。我在基类中拥有的虚函数用于确定输出,但是当我在 AND.h 中对其进行原型制作并尝试使用 AND.cpp 实现它时,我在编译时出现重新定义错误。我确信我已经正确地包含了所有内容。
门头
#ifndef GATE_H
#define GATE_H
class Gate{
public:
// various functions etc.
virtual bool output(); // **PROBLEM FUNCTION**
};
#endif
门源
#include "Gate.h"
//*various function declarations but not virtual declaration*
派生类“AND”
#ifndef AND_H_INCLUDED
#define AND_H_INCLUDED
class AND: public Gate{
public:
bool output(bool A, bool B){}
};
#endif // AND_H_INCLUDED
以及我的 IDE 将我的错误放在 AND.h 文件中的位置
#include "AND.h"
bool AND::output(bool A, bool B){
if (A && B == true){
Out = true;
} else {
Out = false;
}
return Out;
}
在这种情况下,Out 是一个继承变量。
【问题讨论】:
-
您的
AND标头应包含编译所需的标头。 -
就我而言,你不能声明一个没有参数的函数,然后用参数重新定义它。
-
@Mauren,在这种情况下,它会被遮蔽。
-
老实说,我会让
output函数只是return Out = A && B;。 -
@chris true,感谢您的指出。然而,它似乎并不是 OP 想要的。
标签: c++ function class virtual