c++ - std::make_pair: "cannot convert ‘int*’ 到 ‘std::pair<EndPointAddr*, EndPointAddr*>*’ 初始化”

标签 c++ c++11 std-pair

在下面列出的函数中,我尝试创建一个指向 std::pair 对象的指针,在该对象中我收到此消息底部显示的编译错误(相关行号已在下面的代码片段中标记)。你能告诉我这段代码有什么问题吗?谢谢。

 void 
 XXX::addSubscription(EndPointAddr* ptrRequesterServiceAddr, 
                      EndPointAddr* ptrRequestedServiceAddr)
 {
  //LINE 908 indicated in the g++ output starts HERE
  std::pair<EndPointAddr*, EndPointAddr* > *thePair = 
  new  std::make_pair(ptrRequesterServiceAddr, ptrRequestedServiceAddr);

  mServiceSubscriptionsList.push_back(thePair); 
 }  

编译输出:

 ../XXX.cpp: 
 In member function ‘void XXX::addSubscription(EndPointAddr*, EndPointAddr*)’:
 ../XXX.cpp:908:59: error: expected type-specifier
 ../XXX.cpp:908:59: error: cannot convert ‘int*’ to ‘std::pair<EndPointAddr*, EndPointAddr*>*’ in initialization
 ../XXX.cpp:908:59: error: expected ‘,’ or ‘;’

最佳答案

std::pair<EndPointAddr*, EndPointAddr* > *thePair = 
  new  std::make_pair(ptrRequesterServiceAddr, ptrRequestedServiceAddr);
            ^^^^^^

应该是

std::pair<EndPointAddr*, EndPointAddr* > *thePair = 
  new  std::pair<EndPointAddr*, EndPointAddr*>(ptrRequesterServiceAddr, ptrRequestedServiceAddr);
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

std::make_pair 是一个函数。您正在尝试将 std::pair 指针分配给函数。

关于c++ - std::make_pair: "cannot convert ‘int*’ 到 ‘std::pair<EndPointAddr*, EndPointAddr*>*’ 初始化”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15955195/

相关文章:

c - 在标准 C 中使用 pair 和 make_pair

c++ - 如何将具有不同第二种类型的可变数量的 `std::pair` 传递给函数

c++ - 如何在 C++ 中制作一组无序的整数对?

c++ - operator== 的隐式类型转换

c++ - getter 函数是否需要互斥体?

c++ - 跨 Windows DLL 模块边界清理堆分配资源的问题

c++ - 从main.cpp中分离一些函数时出现 "undefined symbols for architecture"错误,怎么办?

c++ - 将STL算法传递给另一个函数

python - 我有一个带有 C++11 代码的 CPython C++ 模块,但我似乎无法在 travis-ci 上构建

c++ - 如何在可变参数模板中获取嵌套参数包?