AQList<T *>
は簡単にconst-correctすることはできません。関数を考えてみましょう
void f(QList<T *> list)
{
list[0]->constFunction();
}
fをに変更できます
void f(QList<const T *> list)
でもそれではできません
f(QList<T *>()); //Compile error
コンパイラは暗黙的ににキャストできないため、QList<T *>
もうQList<const T *>
。ただし、次のようにQListを明示的に再解釈できます。
template <typename T> inline QList<const T *> &constList(const QList<T *> &list)
{
return (QList<const T *> &)list;
}
これにより、constList
テンプレート関数を使用して、次のように任意QList<T *>
のをにキャストできます。QList<const T *>
f(constList(QList<T *>()));
正常に動作しているように見えますが、実際にこれを行うのは安全ですか?