【发布时间】:2012-05-26 08:01:17
【问题描述】:
我正在尝试编写两个模板函数。它们必须简单地返回对局部变量的引用。但它不起作用:
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;
};
错误:非命名空间范围“类 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(); }
错误:“
请更正我的代码。
【问题讨论】:
-
您不想专门化函数,而是覆盖它们。见gotw.ca/publications/mill17.htm
-
你通过非常量指针返回那些,还不如将它们公开并丢弃愚蠢的访问器。
-
@Cat Plus Plus,我需要它们作为模板函数,因为我想在另一个模板函数中使用它们。