相关疑难解决方法(0)

运算符 - >"链接"指针吗?

可能重复:
重载运算符 - >

嗨,

我已经看到operator->()它在被评估后被链接(重新应用),例如:

struct Bar
{
  Bar() : m_str("Hello world!") {}
  const string* operator->() const { return &m_str; }
  string m_str;
};

struct Foo
{
  const Bar& operator->() const { return m_bar; }
  Bar m_bar;
};

int main()
{
  Foo f;
  cout << f->c_str() << endl;
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

工作得很好,这需要三个operator->()进行评估- Foo::operator->(),Bar::operator->()和普通指针分辨率.

但它不适用于中间的Foo::operator->()指针- 如果返回指向Bar而不是引用的指针,它就不会编译.auto_ptr<auto_ptr<string>> 例如,同样如此.

它是否特定于非重载,operator->()因此它只应用一次而不会导致链接?可以在不使用的情况下使代码低于工作(*ptr2)-> ...吗?

int …
Run Code Online (Sandbox Code Playgroud)

c++ method-chaining operator-keyword

7
推荐指数
1
解决办法
4005
查看次数

标签 统计

c++ ×1

method-chaining ×1

operator-keyword ×1