【C++詳細】char**はconst char**に値を付与

937 ワード

いつもchar*をconst char*に付与しているので、当然ながらchar**をconst char**に付与できると思っていた結果が間違っていました.
error: cannot initialize a parameter of type 'const char **' with an rvalue of type 'char **'

次の例を示します.
int main() {
  const char c = 'c';
  char* pc;
  const char** pcc = &pc; //1: not allowed
  *pcc = &c;
  *pc = 'C'; //2: modifies a const object
}

//1のコードはchar**をconst char**に付与することであり、それが合法であると仮定すると、次の行ではpccというchar*を間接的にconst charに指向することができ、強制的な変換はありません.このとき//2のコードでconst charの内容を変更できます.
同じ理屈でconst int**などもあります.