chapter7_quesiton4_ex7.53
Closed this issue · 2 comments
Ocxs commented
在您贴的代码中,
#ifndef ex7_53_h #define ex7_53_h class Debug { public: constexpr Debug(bool b = true) :hw(b), io(b), other(b){} constexpr Debug(bool h, bool i, bool o) : hw(h), io(i), other(o){} constexpr bool any() { return hw || io || other; } void set_io(bool b){ io = b; } void set_hw(bool b){ hw = b; } void set_other(bool b){ hw = b; } ~Debug(){} //add private: bool hw; bool io; bool other; }; #endif
这一句constexpr bool any() { return hw || io || other; }
我在vs2013底下调试会报错,报错内容: 只允许在文本类类型中使用 constexpr
成员函数 。而且虽然报错,但是编译也能过,是我写在头文件里,在main
函数的cpp
文件中没有include
导致的吗?
但是如果我将析构函数~Debug(){}
去掉,这个报错就没了。这是怎么回事呢?
还有就是书上在代码后面备注的
bool rt; // runtime error bool io; // I/O error bool other; // the others
是什么意思?
update: 您在exercise.54的答案里说:
a constexpr function must contain exactly one return statement
这句话我在书上那一节也看过,这里说只能有一句return语句,是说整个函数体只能有一个return 语句,其他赋值语句什么的都不能有,还是说可以有其他语句,但是return语句只能有且只有一个?
pezy commented
我在vs2013底下调试会报错
我试了一下,也报错,而且也编不过。check: http://stackoverflow.com/questions/20264644/constexpr-not-compiling-in-vc2013,貌似是 VC2013 对 constexpr
的支持有问题。
Visual Studio 学习 C++ 并不是一个好主意,更推荐使用 gcc 或 Clang 编译器。(对 C++11 标准支持更好)
是什么意思?
仅仅是对变量缩写的解释。。。
是说整个函数体只能有一个return 语句
是。