У меня есть следующий код, который дает мне эту ошибку
main.cpp (41): ошибка C2664: 'std :: pair std :: make_pair (_Ty1, _Ty2)': невозможно преобразовать аргумент 1 из 'Handle' в 'unsigned int &'
Моя примерная программа
#include <vector>
#include <utility>
typedef unsigned int u32;
typedef u32 Handle;
struct File
{
File()
: ch(0),
pageIdx(0)
{
}
Handle ch : 8;
u32 pageIdx;
};
int main() {
std::vector<std::pair<Handle, u32> > toTrim;
toTrim.reserve(64);
File* m_pFirstPage = new File();
File* pRef = m_pFirstPage;
toTrim.push_back(std::make_pair(pRef->ch,pRef->pageIdx));
return 0;
}
Когда я пытаюсь выполнить статическое приведение, т.е.
toTrim.push_back(std::make_pair(static_cast<unsigned int>(pRef->ch), pRef->pageIdx));
Я получаю следующую ошибку
main.cpp (41): ошибка C2664: 'std :: pair std :: make_pair (_Ty1, _Ty2)': невозможно преобразовать аргумент 1 из 'unsigned int' в 'unsigned int &'
Может ли кто-нибудь помочь мне решить эту проблему и объяснить, что я делаю неправильно.