我遇到以下代码片段的问题
string const& symbol::at(int index) const {
assert(index<symbol_data.vector::size());
return symbol_data.vector::at(index);
}
这里,symbol_data是类的私有成员,是一个向量
:: at是我定义的符号类中的成员函数。
当我尝试编译此代码时,我收到以下错误消息:
error: ‘template<class _Tp, class _Alloc> class std::vector’ used without template parameters
但是,如果我将函数原型更改为
,则没有错误 string symbol::at(int index) {...}
有人知道如何让STL向量与const引用一起正常工作吗?
答案 0 :(得分:0)
我的代码正如我写的那样:
string const& symbol::at(int index) const {
assert(index<symbol_data.vector::size());
return symbol_data.vector::at(index);
}
而不只是symbol_data.vector::
只写symbol_data.
。
干杯&amp;第h。,
答案 1 :(得分:0)
我无法重现你的问题;以下编译并在VS2010 express上正常工作。
#include <cassert>
#include <iostream>
#include <string>
#include <vector>
class symbol
{
std::vector<std::string> symbol_data;
public:
symbol()
{
symbol_data.push_back( "Str1" );
symbol_data.push_back( "Str2" );
}
std::string const& at( int index ) const
{
assert( index < symbol_data.vector::size() );
return symbol_data.vector::at( index );
}
};
int main()
{
symbol s;
std::cout << s.at( 0 ) << std::endl;
std::cin.get();
return 0;
}