return const std :: string *&来自std :: string *标签[11]

时间:2014-01-19 05:29:57

标签: c++ string pointers reference const

我班上有一个字符串数组:

class A
{
   string*          tab[11];
   const string*&   getTab();
}

我正在填写

  

const string& str

我的第一个想法就是:

return tab;

但是G ++告诉我:

  

从'std :: string **'类型的右值开始无效初始化'const string *&'类型的非const引用

我做错了什么?

我该怎么回事?

提前致谢:)

2 个答案:

答案 0 :(得分:2)

string*&是对字符串指针的引用 但是你想要返回对指向字符串的指针的数组的引用。 所以你应该返回的类型是string**&(当然它可以是const)。

另一个解决方案是使用类型std::array<class T, std::size_t N>而不是原始数组,这样你的语法会更清晰:

class A
{
    std::array<string*, 11> tab;
    const std::array<string*, 11>& getTab();
}

std::array是一个非常轻量级的原始c-array包装器,因此使用它几乎不会产生任何性能开销。

答案 1 :(得分:1)

最简单的方法是声明一个合适的typedef:

class A
{
   typedef string Table[11];
   Table     tab;
   Table&    getTab();
};