我的程序出现奇怪的行为。 我写了一个总是失败的测试。 调试时我看到了一些我不明白的东西:
我有多个构造函数,但如果我通过 _T() 传递 unicode,这个构造函数总是被调用:
IsNullable(bool isNullable)
: m_bIsNullabe(isNullable), Flag(eNullAllowed)
{};
这是我调用构造函数的方式:
... = new IsNullable(_T("N"));
奇怪的是,上面的 bool 构造函数总是被调用...
为什么会这样?如果有人知道我会很高兴!
贪婪, 克莱门斯
编辑:
应该调用此构造函数:
IsNullable(wchar_t isNullable)
: Flag(eNullAllowed)
{...};
最佳答案
要调用的构造函数采用 wchar_t
字符,而不是指向宽字符串的指针。称它为:
IsNullable( L'N' );
请注意,我没有使用 _T
宏,因为您的构造函数参数类型是 wchar_t
并且它不是基于 UNICODE
是否是符号被定义。所以在这种情况下不需要那个宏。
调用另一个构造函数的原因是因为 const wchar_t[2]
类型的字符串文字(假设 _T
宏扩展为 L"N"
),衰减为 const wchar_t *
,然后隐式转换为 bool
。
关于c++ - 带有 bool 参数的构造函数总是使用 _T ("..."调用)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13822730/