【发布时间】:2019-05-23 03:18:29
【问题描述】:
一个函数有2 参数。一种类型是类的向量(具有字符串私有变量)。另一个是它要查找的字符串。我尝试了== 两个字符串,但它不起作用。我期待它,但希望我可以在上面使用friend,但它似乎只适用于2 类。
我尝试在 Term 类上使用 friend 函数进行搜索,但找不到使用一个类和一个函数的结果。除了friend,我想不出别的办法了。
class Term
{
string str;
unsigned long long int weight;
Term(string s, long int w) : str(s), weight(w) {}
};
//my teacher provided this code so I can't change anything above
int FindFirstMatch(vector<Term> & records, string prefix)
//prefix is the word it looks for and returns the earliest time it appears.
{
for (int i=0; i<records.size(); i++)
{
if (records[i].str==prefix)
{
//I just need to get this part working
return i;
}
}
}`
它说str 是Term 的私有成员。这就是为什么我希望在上面简单地使用friend。
【问题讨论】:
-
您可以将
FindFirstMatch声明为友元函数,但您必须在类内部进行。如果你不能修改类,就没有办法做你想做的事。您确定您发布了老师提供的确切代码,并且您无法修改它吗? -
Term完全无法使用。没有什么是公开的,所以什么都不能访问。您甚至无法创建该类型的对象。必须在班级内声明朋友。声明要么缺少public:作为第一行,要么需要是struct而不是class。
标签: c++ class search stdvector friend