我在编译时收到了未定义的架构错误符号。
必须使用Vector,Find()算法和非成员重载的运算符函数。
有关错误的一些指导将不胜感激。
#include <stdio.h>
#include <iostream>
#include <stdexcept>
#include <vector>
#include <algorithm>
#include <string>
using namespace std;
struct person
{
char firstInitial;
string firstName;
person(const char fi, const string fn)
{
firstInitial = fi;
firstName = fn;
};
char getInitial()
{
return firstInitial;
};
string getName()
{
return firstName;
};
bool operator==(const person& r);
};
bool operator==(const person& r, const person& x)
{
return x.firstInitial == r.firstInitial;
}
int main (int argc, char *argv[])
{
vector<person> myvector;
vector<person>::iterator itr;
myvector.push_back(person('j', "john"));
myvector.push_back(person('s', "steve"));
myvector.push_back(person('c', "candice"));
itr = find (myvector.begin(), myvector.end(), person('s', ""));
if (itr != myvector.end())
cout << "First Name: " << itr->getName() << '\n';
else
cout << "NOT Found" << '\n';
}
答案 0 :(得分:1)
operator==
的声明和定义不匹配。如果你想让它成为一个非成员函数,只需删除类定义中的声明,它就使它成为一个成员函数。
bool operator==(const person& r);
如果要使其成为成员函数,则应在类定义之外将其定义为:
bool person::operator==(const person& r)
{
...
}
答案 1 :(得分:0)
您需要在类之外定义比较器,而不是作为成员函数
class Person
{
public:
friend bool operator==(const person &a, const person &b);
}
bool operator==(const person& r, const person& x)
{
return x.firstInitial == r.firstInitial;
}
这应该有效,你的程序为我回复了“史蒂夫”。