根据MSDN doc on __interface,Visual C ++接口“不能包含构造函数,析构函数或运算符。”
为什么界面不能包含运算符?返回引用的get方法之间是否存在很大差异:
SomeType& Get(WORD wIndex);
和重载的索引器运算符?
SomeType& operator[](WORD wIndex);
答案 0 :(得分:8)
__interface
修饰符是一个Visual C ++扩展,用于帮助实现COM接口。这允许您指定COM'接口'并强制执行COM接口规则。
因为COM是C兼容的定义,所以你不能拥有运算符,Ctor或Dtors。
答案 1 :(得分:1)
这看起来像.dll。您需要一个方法名称,以便您可以使用其他不支持运算符重载的语言,例如C
。
答案 2 :(得分:1)
接口不能包含运算符,因为运算符不能是虚函数。基本上接口是其他类派生自的基类。
编辑:在阅读完评论并考虑更多内容之后,我意识到这是多么愚蠢。请原谅我急切的手指。运算符与任何其他函数没有区别。更可能的原因是__interface生成类派生自公共基类,并且dll必须拥有它们在本地使用的所有构造函数,析构函数和赋值运算符。