簡體   English   中英

char指向數組的指針轉換為char指向指針的指針

[英]char pointer to array conversions to char pointer to pointer

我有一個功能:

void add(char const**);

我將其調用如下:

template<typename T>
void anotherAdd(T const& t) {
  add(&t);
}
...
anotherAdd("some string");

結果我得到了錯誤:

 no known conversion for argument 1 from 'const char (*)[10]' to 'const char**'     

為什么無法進行轉換?

因為我認為以下是正確的:

"some string" <=> char const* =>
&"some string" <=> char const**

數組不是指針。

該代碼需要一個指向指針的指針

void add(char const**);

編譯器告訴您它無法產生指向指針的指針,因為您的代碼沒有指向的指針。 您正在有效地嘗試評估&"some string" ,這沒有任何有效含義。

該代碼將起作用,因為它會創建您要嘗試獲取其地址的缺失char const*

template<typename T>
void anotherAdd(T const& t) {
  char const *pt = &t; // Now there's a pointer that you can take the address of.
  add(&pt);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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