2つのテンプレート関数を作成しようとしています。ローカル変数への参照を返す必要があります。しかし、それは機能しません:
class Cube_cache_value {
public:
//...
template<>
QVector<unsigned short>& get_buffer<unsigned short>() { return vector; } // error here
template<>
QVector<float>& get_buffer<float>() { return float_vector; }
private:
QVector<unsigned short> vector;
QVector<float> float_vector;
};
エラー:名前空間以外のスコープでの明示的な特殊化'class hsp :: Cube_cache_value'
次に、関数をクラススコープから外そうとしましたが、コンパイラはそれを好みません。
class Cube_cache_value {
public:
//...
inline QVector<unsigned short>& get_buffer() { return vector; }
inline QVector<float>& get_float_buffer() { return float_vector; }
private:
QVector<unsigned short> vector;
QVector<float> float_vector;
};
template<>
QVector<unsigned short>& get_buffer<unsigned short>(Cube_cache_value* v) { //error here
return v->get_buffer();
}
template<>
QVector<float>& get_buffer<float>(Cube_cache_value* v) { return v->get_float_buffer(); }
エラー:「<」トークンの前に初期化子が必要です
コードを修正してください。