Типизация ссылок и указателей в C++
Я могу продолжать относиться ведения вектор&ЛТ;недействительным*>, Чтобы ссылка на вектор&ЛТ;Фу*&ГТ; а я не могу относиться вектор&ЛТ;недействительным*>, Чтобы вектор&ЛТ;Фу*&ГТ;. Я получаю следующую ошибку: ошибка c2440: 'оператора reinterpret_cast' : не удается конвертировать из 'СТД::вектор&ЛТ;_Ty&ГТ;' на 'СТД::вектор&ЛТ;_Ty&ГТ;' зачем?
И я могу набирать void* в Foo*, не получая ошибки компилятора.
void* g =&foo; reportFooVector2(reinterpret_cast<Foo*>(g));
Ниже приведен весь мой код.
#include "stdafx.h" struct Foo { string s; int i; }; void reportFooVector( vector <Foo*> * pvf ) { } void reportFooVector1( vector <Foo*> pvf ) { } void reportFooVector2( Foo *pvf ) { } int main() { struct Foo foo = {"foo", 5}; struct Foo goo = {"goo", 10}; void* g =&foo; reportFooVector2(reinterpret_cast<Foo*>(g)); vector <void *> vf; vf.push_back(&foo); vf.push_back(&goo); reportFooVector1( reinterpret_cast< vector < Foo * > >(vf)); reportFooVector( reinterpret_cast< vector < Foo * > * >(&vf)); }
В этой программе я получаю сообщение об ошибке компилятора ошибка c2440: 'оператора reinterpret_cast' : не удается конвертировать из 'СТД::вектор&ЛТ;_Ty&ГТ;' на 'СТД::вектор&ЛТ;_Ty&ГТ;' при вызове строки reportFooVector1( оператора reinterpret_cast&ЛТ; вектор &ЛТ; Фу * &ГТ; &ГТ;(В. Ф.));
Не могли бы вы, пожалуйста, кто-нибудь сказать причину этого?
Что я уже пробовал:
Я просмотрел сеть, но не смог получить никаких объяснений.