두 개의 템플릿 함수를 작성하려고합니다. 그들은 단순히 지역 변수에 대한 참조를 반환해야합니다.두 가지 표준 유형에 대한 두 개의 템플릿 함수
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;
};
다음
error: explicit specialization in non-namespace scope '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(); }
error: expected initializer before '<' token
하세요 내 코드를 수정하십시오.
기능을 특수화하지 않고 무시할 수 있습니다. http://www.gotw.ca/publications/mill17.htm – nijansen
을 참조하십시오. const가 아닌 포인터로 반환하는 경우 공개로 설정하여 어리석은 접근자를 버릴 수도 있습니다. –
@Cat Plus 더하기, 다른 템플릿 함수에서 사용하기 때문에 템플릿 함수가 필요합니다. –