小编Ren*_*aud的帖子

c ++从double到bool的隐式转换是危险的

这是我第二次犯错,通过创建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行,这显然是坏的)?

c++ gcc g++

7
推荐指数
1
解决办法
1425
查看次数

C++ 11委托构造函数和typedef

我尝试在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'的成员

这段代码有效吗?或者这是一个错误?

c++ c++11 visual-studio-2013

1
推荐指数
1
解决办法
96
查看次数

标签 统计

c++ ×2

c++11 ×1

g++ ×1

gcc ×1

visual-studio-2013 ×1