Xir*_*dus 1 c++ ternary-operator stdstring
我在这行中遇到编译错误:
cout << (MenuItems[i].Checkbox ? (MenuItems[i].Value ? txt::mn_yes : txt::mn_no) : MenuItems[i].Value)
Run Code Online (Sandbox Code Playgroud)
错误:
menu.cpp|68|error: invalid conversion from 'int' to 'const char*'
menu.cpp|68|error: initializing argument 1 of 'std::basic_string<_CharT, _Traits, _Alloc>::basic_string(const _CharT*, const _Alloc&) [with _CharT = char, _Traits = std::char_traits<char>, _Alloc = std::allocator<char>]'
Run Code Online (Sandbox Code Playgroud)
MenuItems是以下类的std :: vector:
class CMenuItem
{
public:
string Name;
int Value;
int MinValue, MaxValue;
bool Checkbox;
CMenuItem (string, int, int, int);
CMenuItem (string, bool);
};
Run Code Online (Sandbox Code Playgroud)
mn_yes和mn_no是std :: strings.
编译器是MinGW(与代码:: blocks一起分发的版本).
两个可能的条件值必须可转换为通用类型.问题是外部条件的左边:
(MenuItems[i].Value ? txt::mn_yes : txt::mn_no)
Run Code Online (Sandbox Code Playgroud)
总是一个string,但是正确的:
MenuItems[i].Value
Run Code Online (Sandbox Code Playgroud)
是一个int.它试图找到一个去的方式const char *- > string,但随后将不允许int以const char *转换(这是很好的,因为这将是毫无意义的).做就是了:
if(MenuItems[i].Checkbox)
{
cout << (MenuItems[i].Value ? txt::mn_yes : txt::mn_no);
}
else
{
cout << MenuItems[i].Value;
}
Run Code Online (Sandbox Code Playgroud)
或类似的.
| 归档时间: |
|
| 查看次数: |
450 次 |
| 最近记录: |