class A
{
public:
A* operator->() const
{
}
void Test() {}
};
然后这样调用它。
A* a = new A;
a->Test();
代码在 VC2010 中成功构建并运行。看起来很奇怪。我想知道这是设计使然还是 VC2010 的错误?
谢谢
最佳答案
在示例中,您没有调用 operator->
,而是直接从 A*
调用 Test
。你想要:
(*a)->Test();
或者...
A a;
a->Test();
VS2010 在 operator->
方面没有任何问题(据我所知)。
在名为 a
的指针上使用 ->
可有效执行:(*a).
。按值对变量使用 ->
将调用您的 operator->
(如果存在),或者如果没有 operator->
,则会出现语法错误.
关于c++ - 为什么operator->重载在VC2010中不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11054772/