【发布时间】:2012-04-07 16:24:03
【问题描述】:
我有一个 logicAND 类,构造函数应该计算两个布尔值的 AND 操作,它是这样工作的:
class logicAND{
public:
logicAND(bool a,bool b):value(a&&b){}
bool output(){return value;}
private:
bool value;
};
int main(){
bool m=false;
bool n=true;
logicAND t1(m,n);
t1.output();
}
然后,我在课前添加了一些老式的宏:
typedef enum { False = 0, True = 1 } Bool;
#define bool Bool
#define true True
#define false False
class logicAND{
public:
logicAND(bool a,bool b):value(a&&b){}
bool output(){return value;}
private:
bool value;
};
int main(){
bool m=false;
bool n=true;
logicAND t1(m,n);
t1.output();
}
现在我不能让它工作了。似乎主要问题在于构造函数类型不匹配。
感谢指出陷阱、原因和解决方案。 谢谢!
【问题讨论】:
-
...我应该问你为什么要这样做吗?真正的目标是什么?
-
您刚刚在上面提供的第二个片段的核心有一个可怕的混乱。
-
在尝试定义一个类来对构造执行一个逻辑操作时,存在一些困惑。
bool t1 = (m && n);似乎不够复杂,不需要更多代码来抽象它。关于我在其中看到的唯一一点是插入操作的能力......但即便如此,由于操作是在构造时完成的,代码仍然必须决定操作并为彼此的操作提供一个案例,可以被执行.... -
"然后,我添加了一些老式宏".....为什么?
-
是的,你应该写
#define bool long,然后它就会被编译。这个评论和你的例子一样有意义!
标签: c++ class constructor boolean typedef