[英]Why can't I reference a pointer to a function of an instantiated object?
[英]Why can't I give constant reference of a pointer as function argument
為什么 c++ 不能編譯以下?
void func(const int *&pp)
{
//Do stuff
}
int main()
{
int var =23;
int* ptr_to_var = &var;
func(ptr_to_var);
}
為了澄清,我想傳遞一個指針作為對 function 的引用,但不應在 function 中更改指針,因此不應更改 const。
我得到的編譯警告是:
error: invalid initialization of reference of type 'const int*&' from expression of type 'int*'
我可以做這樣的事情:
void func(int **pp)
{
//Do stuff
}
但這並沒有給我我想要的確切行為,因為現在我實際上可以更改指針指向的位置,即我錯過了 const 關鍵字。
如果你會這樣做:
void func(const int **pp)
{
//Do stuff
}
這也不能編譯,我實際上不確定它是否會編譯它實際上會做我想要的。
為什么 c++ 不能編譯以下?
void func(const int *&pp) { //Do stuff }
這是格式良好的,任何符合標准的編譯器都會編譯它。
我得到的編譯警告是:
error: invalid initialization of reference of type 'const int*&' from expression of type 'int*'
錯誤消息不是很清楚,但我認為它試圖說您嘗試使用右值初始化引用。 對非常量左值的引用不能綁定到右值。
如果你會這樣做:
void func(const int **pp) { //Do stuff }
這也不編譯
這也是格式良好的,符合標准的編譯器必須接受它。
您可以在此處看到這兩個示例均已成功編譯。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.