const引用返回和STL向量的问题

problem with const reference return and STL vectors

本文关键字:向量 问题 STL 引用 返回 const      更新时间:2023-10-16

我对以下代码片段有问题

    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引用一起正常工作吗?

我写这篇文章时的代码:

string const& symbol::at(int index) const {
    assert(index<symbol_data.vector::size());
    return symbol_data.vector::at(index);
    }

只写symbol_data.而不是symbol_data.vector::

干杯&hth。,

我无法重现您的问题;以下程序在VS2010express上编译并运行良好。

#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;
}