在测试Excel相关操作的时候报这个错,该怎么解决阿?
我定义了一个TExcelApplication的指针ea
然后在一个按钮点击事件中写了如下代码:
ea->Connect();
ea->Visible=true;
...
...
然后报错:[C++ Error] Unit1.cpp(37): E2015 Ambiguity between
'TOLEBOOL::operator bool() const'
and 'TOLEBOOL::operator short() const'
我也知道ea->Visible是TOLEBOOL类的,里面的定义确实有重载的同名不同意(一个单字节,一个双字节的),但是我该怎么写这一句避免歧义呢?
TOLEBOOL的定义如下:
class TOLEBOOL
{
public:
TOLEBOOL(bool flag = false) : m_VariantBool(flag ? VARIANT_TRUE : VARIANT_FALSE) {}
TOLEBOOL(VARIANT_BOOL flag) : m_VariantBool(flag ? VARIANT_TRUE : VARIANT_FALSE) {}
TOLEBOOL(int flag) : m_VariantBool(flag ? VARIANT_TRUE : VARIANT_FALSE) {}
TOLEBOOL(const TOLEBOOL& src) : m_VariantBool(src.m_VariantBool) {}
TOLEBOOL& operator=(const TOLEBOOL& src)
{
m_VariantBool = src.m_VariantBool;
return *this;
}
TOLEBOOL& operator=(bool flag)
{
m_VariantBool = flag ? VARIANT_TRUE : VARIANT_FALSE;
return *this;
}
TOLEBOOL& operator=(VARIANT_BOOL flag)
{
m_VariantBool = flag ? VARIANT_TRUE : VARIANT_FALSE;
return *this;
}
TOLEBOOL& operator=(int flag)
{
m_VariantBool = flag ? VARIANT_TRUE : VARIANT_FALSE;
return *this;
}
bool operator==(bool val) { return val ? (m_VariantBool != VARIANT_FALSE) : (m_VariantBool == VARIANT_FALSE); }
bool operator==(VARIANT_BOOL val) { return m_VariantBool == val; }
operator bool () const { return m_VariantBool != VARIANT_FALSE; }
operator VARIANT_BOOL () const { return (m_VariantBool != VARIANT_FALSE) ? VARIANT_TRUE : VARIANT_FALSE; }
protected:
VARIANT_BOOL m_VariantBool;
};