2 c++
在下面的代码中,如果我注释掉它aaa或者bbb它将编译.为什么我不能同时拥有?
#include <iostream>
class MyClass
{
private:
typedef void (MyClass::*aaa)() const;
typedef void (MyClass::*bbb)() const;
void ThisTypeDoesNotSupportComparisons() const {}
public:
operator aaa() const { return (true) ? &MyClass::ThisTypeDoesNotSupportComparisons : 0; }
operator bbb() const { return (true) ? &MyClass::ThisTypeDoesNotSupportComparisons : 0; }
};
int main()
{
MyClass a;
MyClass b;
if(a && b) {}
}
Run Code Online (Sandbox Code Playgroud)
你的typedef aaa和bbb是相同的.因此,您的转换运算符实际上声明了相同的功能.
从本质上讲,编译器会看到
operator void (MyClass::*)() const { ... }
Run Code Online (Sandbox Code Playgroud)
两次,一次aaa,一次bbb.
| 归档时间: |
|
| 查看次数: |
81 次 |
| 最近记录: |