这是我第二次犯错,通过创建bool类型的变量而不是double.例如考虑
double f()
{
return true;
}
bool something()
{
return 0.0;
}
double g()
{
bool x = 0.0; // (1)
if (something()) {
x = f(); // where f() is a function returning a double
}
return x;
}
Run Code Online (Sandbox Code Playgroud)
我认为编译器应该告诉我这很糟糕,但是我的编译器(g ++)没有用-Wall发出一个小警告......并且它会在测试中导致一个bug.是否有一些选项让gcc/g ++有警告(例如在第1行,这显然是坏的)?
我尝试在visual studio 2013(社区版)中编译一些代码,但我遇到了问题:以下代码拒绝编译.
struct X
{
X(double y);
};
typedef X Z;
struct Y : public Z
{
using Z::Z;
};
Run Code Online (Sandbox Code Playgroud)
问题是使用Z :: Z的行.它给了我一个错误C2039:'Z':不是'X'的成员
这段代码有效吗?或者这是一个错误?