gpt4 book ai didi

c++ - 将成员访问运算符与重载调用运算符相结合

转载 作者:太空宇宙 更新时间:2023-11-04 15:37:27 25 4
gpt4 key购买 nike

给定一个重载了 Boo* operator()(unsigned int) 的类 Foo,应该如何访问重载的运算符?

我最初尝试过

std::unique_ptr<Foo> foo_ptr(new Foo);
Boo* boo_ptr = foo_ptr(1);

但这行不通,所以我试了:

std::unique_ptr<Foo> foo_ptr(new Foo);
Boo* boo_ptr = foo_ptr->(1);

但这也不起作用(我真的没想到它会起作用)。相反,我必须做

std::unique_ptr<Foo> foo_ptr(new Foo);
Boo* boo_ptr = (*foo_ptr)(1);

这比在 Foo 中声明一个方法(例如 ByIndex(unsigned int))更冗长(并且使它更短更简洁是我在中重载运算符的原因)第一名)。

有没有办法不用 * 运算符来获取指针的基值?

最佳答案

不,您必须解除对指针的引用才能访问该对象;所以调用接线员的唯一方法是

(*foo_ptr)(1)
foo_ptr->operator()(1);

关于c++ - 将成员访问运算符与重载调用运算符相结合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29951508/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com