実際に新しいペアを作成せずにstd::pair<const string,int>
をstd::pair<string,int>
に変換するにはどうすればよいですか?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>’
[編集:要するに質問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がstdです:: pair –