有没有人可以告诉我一些很好的资源来理解和使用嵌套类?我有一些像编程原理之类的资料,还有像这样的
但是我仍然不能理解他们的目的。谁能帮帮我?
发布于 2011-01-01 01:26:57
我不经常使用嵌套类,但我偶尔会用到它们。特别是当我定义了某种数据类型,然后我想定义一个为该数据类型设计的STL functor。
例如,考虑一个具有ID号、类型代码和字段名的通用Field
类。如果我想通过ID号或名称搜索这些Field
的vector
,我可能会构造一个函数来执行此操作:
class Field
{
public:
unsigned id_;
string name_;
unsigned type_;
class match : public std::unary_function<bool, Field>
{
public:
match(const string& name) : name_(name), has_name_(true) {};
match(unsigned id) : id_(id), has_id_(true) {};
bool operator()(const Field& rhs) const
{
bool ret = true;
if( ret && has_id_ ) ret = id_ == rhs.id_;
if( ret && has_name_ ) ret = name_ == rhs.name_;
return ret;
};
private:
unsigned id_;
bool has_id_;
string name_;
bool has_name_;
};
};
然后,需要搜索这些Field
的代码可以使用Field
类本身范围内的match
:
vector<Field>::const_iterator it = find_if(fields.begin(), fields.end(), Field::match("FieldName"));
发布于 2015-09-28 04:21:51
One can implement a Builder pattern with nested class。特别是在C++中,我个人发现它在语义上更清晰。例如:
class Product{
public:
class Builder;
}
class Product::Builder {
// Builder Implementation
}
而不是:
class Product {}
class ProductBuilder {}
发布于 2021-05-17 17:04:59
我认为使类成为嵌套类而不仅仅是朋友类的主要目的是能够在派生类中继承嵌套类。友谊不会在C++中继承。
https://stackoverflow.com/questions/4571355
复制相似问题