将const引用返回给字符串

时间:2017-06-18 03:17:30

标签: c++ operator-overloading

我正在构建一个秘密消息类,其中包含消息中的行向量以及可以查看每条消息的最大次数。我试图重载[]运算符以便能够看到消息。

例如:如果我想初始化以下字符串向量,我应该能够...

vector<string> m = {
    "Here is the first line",
    "I have a second line as well",
    "Third line of message"};

//initialize message - each line may be viewed a maximum of two times
SelfDestructingMessage sdm(m, 2);

cout << sdm[0] << endl;
//outputs "Here is the first line" and decrements remaining views of first line by one

我的问题是,我在头文件中声明了运算符,然后在函数文件中将其定义如下:

string SelfDestructingMessage::operator[](size_t index){
    return const string & message[index];
}

因此,我应该能够使用带有size_t参数(索引)的[]运算符来查看实际的消息。它应该返回一个const引用,该引用是从特定于该对象的消息向量索引的消息字符串。

但是在编译时,我得到一个&#34;错误:在&#39; const&#39;之前的预期的主表达式return const string&amp;消息[指数];&#34;

有关于此原因的任何想法吗?

1 个答案:

答案 0 :(得分:1)

const string &部分需要在函数的签名中。无需在正文中明确地将message[index]转换为const string&,它会自动发生:

const string& SelfDestructingMessage::operator[](size_t index){
    return message[index];
}
// also update the declaration

下次请尝试写一个minimal, compilable example。这真的有助于那些试图回答你问题的人。