[OK]をので、私は)int型と通話データ(によって移入されたVという名前の既存のベクトルオブジェクトにvector_refオブジェクトをリターゲットにしようとしていますconst参照を渡すと、コードのパラドックスにつながります。
class vector_ref {
public:
int* data() const { return m_data }
void retarget(std::vector<int> const& _t)
{ m_data = _t.data();
m_count = _t.size() }
private:
int* m_data;
size_t m_count;
}
vector_refという名前のクラス内の関数を持っています。
vector_ref<int> tmp;
tmp.retarget(const_cast<std::vector<int> const&>(v));
tmp.data(); // error here
コンパイルを再ターゲットに渡すが、()のデータを呼び出すと、エラーが得られます。
invalid conversion from const int* to int* { m_data = v.data() ... }
これは、メンバ変数m_data
がconst
ないよう、私には意味になりますが、このクラス定義を与えられましたどのようにしてretarget
を既存のvector
にどうすればできますか? const
をretarget()
に渡す必要がある場合、のメンバー変数m_data
が設定されていますが、vector_ref
インスタンスを正常に再コンパイルするコードを正常にコンパイルするにはどうすればよいですか?
あなたの意向は何ですか?パラメータを 'const&'として取ると、あなたはそれを変更しないと宣言しますが、ポインタを変更することができることを示す変化可能なポインタを使いたいとします。 – Justin
私は他人のプロジェクトからコードを読んで、なぜこう書いたのか理解しようとしています。 – jojeyh