尝试从继承的类调用函数string SetToString(StringSet aSet);
时出错。
基类的头文件:
#ifndef ITEM_H
#define ITEM_H
#include <ostream>
#include <set>
#include <string>
using namespace std;
typedef set<string> StringSet;
class Item
{
protected:
string title;
StringSet keywords;
public:
Item();
Item(const string& title, const string& keywords);
virtual ~Item();
void addKeywords(string keyword);
virtual ostream& print(ostream& out) const;
string getTitle() const;
string SetToString(StringSet aSet);
};
基类的实现文件:
#include "Item.h"
...
string Item::SetToString(StringSet aSet) {
string key;
int sizeCount = 0;
for (auto const& e : aSet) {
key += e;
sizeCount++;
if (sizeCount < aSet.size()) {
key += ", ";
}
}
SetToString(keywords);
return key;
}
...
当我尝试在继承的类中执行string k = SetToString(keywords);
时,我收到错误:Error C2662 'std::string Item::SetToString(StringSet)': cannot convert 'this' pointer from 'const Book' to 'Item &'
。如何解决这个错误,为什么我会得到它?
答案 0 :(得分:3)
Item::SetToString
未标记为const
,因此无法通过const
指针或引用或const
对象调用它。
您似乎试图从 标记为const
的函数中调用它,因此无法修改当前对象(this
),包括在其上调用非const
函数。
使您的继承函数不是const
,或者使基函数const
。