错误我想超载运算符< <打印在MapType中的字符串*的向量(请参阅下面的typedef),但不断收到错误。请帮忙。下面是详细信息,我有下面的类:使用std :: transform打印地图<字符串,向量<string*>>
typedef map<string, vector<string*> > MapType;
class Thesaurus{
public:
...
friend ostream& operator<<(ostream& ostrm, const Thesaurus& T);
private:
MapType M;
string DeRef(string* i);
...
};
凡
ostream& operator<<(ostream& ostrm, const Thesaurus& T)
{
for(MapType::const_iterator mItr = T.M.begin(); mItr!= T.M.end(); mItr++)
{
ostrm<< endl;
ostrm<< mItr->first<<"\t"; //print word
transform(mItr->second.begin(), mItr->second.end(), ostrm, &Thesaurus::DeRef); // print synonyms vector
}
return ostrm;
}
string Thesaurus::DeRef(string* i)
{
return *i;
}
使用在运营商< <变换引发以下错误:
"error C2248:'std::basic_ios<_Elem,_Traits>::basic_ios':cannot access private member declared in class 'std::basic_ios<_Elem,_Traits>'"
您正尝试传递一个流进行转换。它期望一个迭代器。 – jrok