Как я могу конвертировать std::pair<const string,int>
в std::pair<string,int>
без фактической создания новой пары?Const Conversion in std :: pair
Я попытался с помощью static_cast, как показано ниже:
static_cast<std::pair<const string, int>>(curr->valPair)
curr-> valPair - возвращается std::pair<string,int>
Но она возвращается ошибка:
invalid initialization of non-const reference of type ‘std::pair<const std::basic_string<char>, int>&’ from an rvalue of type ‘std::pair<const std::basic_string<char>, int>’
[Edit: Короче вопрос как конвертировать std::pair<string,int>
в std::pair<const string,int>
]
Edit2:
Добавление небольшой кусочек кода, чтобы воспроизвести проблему
#include<iostream>
using namespace std;
class A
{
std::pair<int,int> valPair;
public:
std::pair<const int,int> & getPairByReference();
};
std::pair<const int,int> & A::getPairByReference()
{
return valPair;
}
int main()
{
A a;
a.getPairByReference();
return 0;
}
я получаю ниже ошибки при компиляции:
try-5.cpp: In member function ‘std::pair<const int, int>& A::getPairByReference()’:
try-5.cpp:15:12: error: invalid initialization of reference of type ‘std::pair<const int, int>&’ from expression of type ‘std::pair<int, int>’
Можете ли вы объяснить, что случилось с вопросом? –
На ваш вопрос не хватает контекста. Что такое curr, какова ссылка, которую упоминает сообщение об ошибке, и т. Д. Просьба представить минимальный, полный и проверяемый пример. http://stackoverflow.com/help/mcve. – mars
@ Eichhörnchen - Я упомянул в вопросах, чтоcurr-> valPair is std :: pair –