首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么要在C++中使用嵌套类?

为什么要在C++中使用嵌套类?
EN

Stack Overflow用户
提问于 2011-01-01 01:14:59
回答 4查看 196.3K关注 0票数 216

有没有人可以告诉我一些很好的资源来理解和使用嵌套类?我有一些像编程原理之类的资料,还有像这样的

但是我仍然不能理解他们的目的。谁能帮帮我?

EN

回答 4

Stack Overflow用户

发布于 2011-01-01 01:26:57

我不经常使用嵌套类,但我偶尔会用到它们。特别是当我定义了某种数据类型,然后我想定义一个为该数据类型设计的STL functor。

例如,考虑一个具有ID号、类型代码和字段名的通用Field类。如果我想通过ID号或名称搜索这些Fieldvector,我可能会构造一个函数来执行此操作:

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"));
票数 24
EN

Stack Overflow用户

发布于 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 {}
票数 16
EN

Stack Overflow用户

发布于 2021-05-17 17:04:59

我认为使类成为嵌套类而不仅仅是朋友类的主要目的是能够在派生类中继承嵌套类。友谊不会在C++中继承。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4571355

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档