这个std :: string构造函数的含义是什么?

Gil*_* PJ 5 c++ string stdstring c++11

今天我试着研究一些代码,我坚持这条线.

std::vector<std::string(SomeClassInterface::*)()> ListOfFnPointers;
Run Code Online (Sandbox Code Playgroud)

这个std :: string构造函数的含义是什么?我经历过这个,但我不知道它意味着什么.

它在代码中用作,

if (!ListOfFnPointers.empty())
{
    std::vector<std::string> StringList;
    for (auto Fn : ListOfFnPointers)
    {
        StringList.push_back((pSomeClassObj->*Fn)());
    }
    ...
}
Run Code Online (Sandbox Code Playgroud)
  1. 该声明是什么意思?
  2. 这个功能到底在做什么pSomeClassObj->*Fn

son*_*yao 5

它与std::string构造函数无关.

std::string(SomeClassInterface::*)()成员函数指针类型,成员函数属于类SomeClassInterface,返回std::string,不带参数.

->*指向成员的访问操作符(也是.*).(pSomeClassObj->*Fn)()将调用成员函数pSomeClassObj,该函数应该是一个带有类型的指针SomeClassInterface*.