c ++设置为具有class函数对象的class成员变量
c++ Set as an class member variable with a class function object
我需要设置为class成员变量,还需要它的比较函数对象使用class.
的属性
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);
}
您可以在构造函数中使用初始化列表:
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;
};
我需要设置为class成员变量,还需要它的比较函数对象使用class.
的属性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);
}
您可以在构造函数中使用初始化列表:
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;
};