在下面列出的函数中,我正在尝试创建一个指向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 ‘;’
答案 0 :(得分:2)
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
指针。
答案 1 :(得分:1)
您需要使用构造函数而不是make对而不是std :: make_pair
std::pair<EndPointAddr*, EndPointAddr* > *thePair =
new std::pair<EndPointAddr*, EndPointAddr* >(ptrRequesterServiceAddr, ptrRequestedServiceAddr);
答案 2 :(得分:0)
您的示例代码未显示有助于了解的mServiceSubscriptionsList
类型。
试试这个:
void
XXX::addSubscription(EndPointAddr* ptrRequesterServiceAddr,
EndPointAddr* ptrRequestedServiceAddr)
{
//LINE 908 indicated in the g++ output starts HERE
std::pair<EndPointAddr*, EndPointAddr* > thePair =
std::make_pair(ptrRequesterServiceAddr, ptrRequestedServiceAddr);
mServiceSubscriptionsList.push_back(thePair);
}