2010-04-20 6 views
8

J'ai une fonction qui nécessite const some_type** comme argument (some_type est une struct, et la fonction nécessite un pointeur vers un tableau de ce type). J'ai déclaré une variable locale de type some_type* et l'ai initialisée. Ensuite, j'appelle la fonction f(&some_array), et le compilateur (gcc) dit:'Conversion invalide de some_type ** en const un_type **'

error: invalid conversion from ‘some_type**’ to ‘const some_type**’ 

Quel est le problème ici? Pourquoi je ne peux pas convertir une variable en const?

Répondre

1

Vous avez probablement besoin de spécifier un peu plus de contexte, par exemple, l'argument a-t-il transmis des données dans (ou les deux?) La fonction?

Essayez de faire votre variable const ainsi:

some_type const *some_array = ....; 

Ce lit comme "some_array est un pointeur sur un const some_type". Le code ne peut pas modifier la chose pointée. Vous devez donc déclarer votre variable const avant de la passer à la fonction.

(Sous la direction ...)

+1

"Non" :) (http://www.parashift.com/c++-faq-lite/const-correctness.html#faq-18.17) – Constantin

+0

Huh. Cela a été marqué comme la réponse acceptée, même si elle ne répond pas du tout à la question du «pourquoi». = ( – jamesdlin

1

Vous avez quelques options pour contourner ce jamesdlin décrit dans sa réponse.

Vous pouvez utiliser une variable intermédiaire. Vous pouvez modifier les paramètres f.

void f(some_type const* const* some_array); 
Questions connexes