我在班上有一个字符串数组:
class A
{
string* tab[11];
const string*& getTab();
}我把它装满了
const string &str
我的第一个想法是做:
return tab;但是G++告诉我:
从‘std::string**’类型的rvalue中初始化“const string*&”类型的非const引用无效
我做错什么了?
我该回些什么?
(预先谢谢:)
发布于 2014-01-19 07:44:08
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-数组的一个非常轻量级的包装器,因此使用它几乎不涉及性能开销。
发布于 2014-01-19 05:48:45
最简单的方法是声明一个合适的ty对联f:
class A
{
typedef string Table[11];
Table tab;
Table& getTab();
};https://stackoverflow.com/questions/21213565
复制相似问题