簡體   English   中英

為什么我不能將指針的常量引用作為 function 參數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM