2012-03-23 11 views

答えて

1

はなく、constのポインタと、ベクトルのコピーを作成します。

vector<T*> pointers; 

vector<const T*> const_pointers(pointers.begin(), pointers.end()); 

my_method(const_pointers); 
4

を関数を呼び出すことができます場合は、あなたがしようとしているものを行うことができないだろう。この

my_method(const vector<const T*> & param); 

のような機能を持っていると仮定すると、行う。 std::vector<T*>は、std::vector<const T*>と同じ型ではないため、関数の引数が関数のパラメータと一致しません。 あなたがしようとしているのは、ある定数の引数を別の型の引数を期待する関数に渡すと、 "定数でない引数を定数の引数に渡す"ことではありません。 「一定のパラメータに非定数引数を渡すと、」

my_method(const vector<T*> & param); 

vector<T*> v; // non const vector 

my_method(v); // OK, method takes v by const reference, so it cannot be modify v. 

、あなたが行うことができ、そのようなものになるだろう。

注、my_method上記の例でvector vを変更することはできないが、vは非constポインタを保持しているので、オブジェクトは、にそれらの点は変更することができます。

0

はそれを試してみて、次を参照してください。http://codepad.org/dHQzwMyH

短い答えを - いいえ。 A

vector<const T*> my_vector; 

でも動作します。

関連する問題