Я пытался передать ссылку на указатели , в основном два случая:
const int* &ref_var
- ref_var - ссылка на указатель на постоянное целое число.
int *const &ref_var
- ref_var - ссылка на постоянный указатель на целое число.
Теперь второй случай работает нормально, так как я не могу изменить сам указатель, но в 1-м случае я получаю сообщение об ошибке, которого, как мне кажется, не должно быть, поскольку переменная неконстантная может передаваться в качестве аргумента функции с константой указателем в качестве параметра.
Код:
#include<iostream>
using std::cout;
using std::endl;
void fun(const int* &ref_var) //error: invalid initialization of reference of type const int*& from expression of type int*
{
//BLANK
}
int main()
{
int x=9;
int *p=&x; //ERROR VANISHES IF P IS DECLARED AS POINTER TO CONSTANT INT
fun(p);
return 0;
}
Где, когда функция fun
объявляется как:
void fun(const int *ptr)
{
//BLANK
}
Работает нормально, несмотря на то, что переданный аргумент является неконстантным указателем на int.
Не могли бы вы сказать мне, где я иду не так.