在测试Excel相关操作的时候报这个错,该怎么解决阿?

donwmufromdying 2005-10-13 02:45:48
我定义了一个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;
};
...全文
108 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
wf2091139 2005-10-22
  • 打赏
  • 举报
回复
接分!
(好象不能给自己分的哦!)
donwmufromdying 2005-10-18
  • 打赏
  • 举报
回复
自己已经解决了.这么简单.揭贴了.

602

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder VCL组件使用和开发
社区管理员
  • VCL组件使用和开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧