智能指针是否支持通过指针调用成员函数
Does a smart pointer support invoking a member function via a pointer?
#include <iostream>
#include <boost/shared_ptr.hpp>
#include <boost/make_shared.hpp>
class BASE
{
public:
int fun1(int i){return i * 1;}
};
int main(){
int (BASE::*pf2)(int);
boost::shared_ptr<BASE> pB = boost::make_shared<BASE>();
pf2 = &BASE::fun1;
std::cout << (pB->*pf2)(3) << std::endl; // compile wrong: error: no match for 'operator->*' in 'pB ->* pf2'|
}
这是否意味着 Boost 库不实现"->*"运算符来支持使用它来调用成员函数指针?
你应该写:
std::cout << ((*pB).*pf2)(3) << std::endl;
正如我所检查的,Boost 没有为任何指针定义运算符->*
,尽管这是可能的(请参阅C++标准,第 5.5 和 13.5 节)。
此外,C++11 标准没有为 C++11 智能指针定义此运算符。
我猜你应该这样做:
std::cout << ((*pB).*pf2)(3) << std::endl;
虽然它没有经过测试。
相关文章:
- 为什么使用 "this" 指针调用派生成员函数?
- 当使用通配符和null指针调用函数时,对输出的说明
- Visual c ++,使用字符串引用/指针调用 dll 函数
- 使用基类指针调用基类的值构造函数的语法是什么?
- 是否可以使用函数指针调用虚拟析构函数?
- 使用C++指针调用 python 函数
- 如何使用接口指针调用方法,该指针是其具体类的一部分,而不是接口的一部分
- 是否可以使用非常量指针调用非常量函数,以及当两个unique_ptrs指向同一个对象时程序的行为方式?
- 在将派生类指针类型转换为派生类指针后,从基类指针调用派生类函数
- 通过指针调用模板类成员函数 [为什么这是有效的 c++]?
- 从带有参数的基函数指针调用基方法
- 使用唯一指针调用函数会使我的程序崩溃
- C++::在构造函数退出之前通过指针调用成员函数
- 有没有办法在没有虚拟的情况下使用基类指针调用派生类函数
- 什么时候用指针调用C++类构造函数
- C++ - 使用变量指针调用函数
- 为什么我可以通过野生指针调用成员函数
- 从指针调用方法时出现分段错误
- 为什么使用指向函数的指针调用虚函数时不需要指针"this"?
- C++ abort() 在函数内的抽象类对象指针调用上