void f(void*&t)
{
}
void main()
{
float* pf = new float(0);
f((void*)pf);
}
cannot convert parameter 1 from 'void *' to 'void *& '
У меня вот такая тема для обсуждения.
Возьмем вот такой пример:
Код:
Он выдает ошибку - cannot convert parameter 1 from 'void *' to 'void *& '
Вообще (void*) не обязательно. По моим знаниям все должно работать(
А вот такой проходит на ура
Код:
void f(void*&t)
{
}
void main()
{
float* pf = new float(0);
void* pv = pf;
f(pv);
}
{
}
void main()
{
float* pf = new float(0);
void* pv = pf;
f(pv);
}
P.S. Пробовал на VS2003
На VS2005 то же самое вроде
Может кто объяснит. Мне моих знаний не хватило(
P.S.P.S. И куда делась репутация?
а в билдере и первый вариант на ура проходит :)
У меня вот такая тема для обсуждения.
Возьмем вот такой пример:
Код:
void f(void*&t)
{
}
void main()
{
float* pf = new float(0);
f((void*)pf);
}
{
}
void main()
{
float* pf = new float(0);
f((void*)pf);
}
Он выдает ошибку - cannot convert parameter 1 from 'void *' to 'void *& '
Вообще (void*) не обязательно. По моим знаниям все должно работать(
А вот такой проходит на ура
Код:
void f(void*&t)
{
}
void main()
{
float* pf = new float(0);
void* pv = pf;
f(pv);
}
{
}
void main()
{
float* pf = new float(0);
void* pv = pf;
f(pv);
}
P.S. Пробовал на VS2003
На VS2005 то же самое вроде
Может кто объяснит. Мне моих знаний не хватило(
P.S.P.S. И куда делась репутация?[/QUOTE]
Смотрим что? Правильно... стандарт. :)
3.10 Lvalues and rvalues п.п.6, 8
5.2.10 Reinterpret cast п.1
8.3.2 References п.4
8.5.3 References п.5
В кратце: reinterpret_cast возвращает rvalue, которое не может служить для инициализации ссылки.