我正在构建一个秘密消息类,其中包含消息中的行向量以及可以查看每条消息的最大次数。我试图重载[]运算符以便能够看到消息。
例如:如果我想初始化以下字符串向量,我应该能够...
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;
有关于此原因的任何想法吗?
答案 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。这真的有助于那些试图回答你问题的人。