C++ Установить в качестве переменной члена класса с объектом функции класса
Мне нужно установить в качестве переменной члена класса, но также нужно, чтобы объект функции сравнения использовал атрибуты класса.
class Example
{
int _member1;
set<string, MyCmp> _myNameSet;
class MyCmp
{
Example& myEx;
MyCmp( const Example& ex) {
myEx = ex;
}
bool operator() (const string& lhs, const string& rhs)
{
/// Use "_member1" here ...
myEx._member1;
/// Do something ....
}
}
};
Итак, вот мой вопрос: как передать объект Example в качестве аргумента конструктору MyCmp? Поскольку "_myNameSet" является переменной-членом.
Если бы это не была переменная-член, есть способ, который я знаю:
void Example::functionBlah()
{
MyCmp obj(&(*this));
set<String, MyCmp> myLocalSet(obj);
}
1 ответ
Решение
Вы можете использовать список инициализатора в конструкторе:
class Example
{
public:
Example() : _member1(0), _myNameSet(this) {}
Example(const Example&) = delete;
Example& operator = (const Example&) = delete;
// Other stuff
private:
int _member1;
set<string, MyCmp> _myNameSet;
};