根据调用的构造函数更改成员的数量
Change number of members depending on constructor called
我需要一个模板类,它有不同的成员,这取决于调用哪个actor。我设法获得了一个类,它使用带有基类的sfinae具有不同的成员(我几乎像成员变量上的sfinae那样做)。现在我的问题是,我可以实现一个模板类,它有不同的成员,这取决于类的哪个部分被调用?也许有人能有办法做到这一点。
编辑:我目前使用boost::variant
,但问题是,变体中最大的对象是巨大的,最小的只是一个指针。这是一个真正的性能问题,因为大多数时候指针将在变量中。
编辑二:如果这将工作与一个演员,这将是了不起的,但如果不是,一个工厂函数也可以工作。
编辑III(或我想要达到的):我目前正在制作一个DSL,它可以翻译成c++。由于我试图使多态性成为可能,所以我只向函数传递指针。因为有些指针是引用计数的,有些指针是原始指针,这取决于用户的需要,所以可以有同一个类的shared_pointer和原始指针。这就是为什么我不能创建两个不同的类,因为如果一个函数在指针上被调用,它应该是同一个函数,否则我必须重载所有的函数,这会给我当函数有n个参数时,2**n个函数。这就是为什么我要尝试创建一个类,它可以代表一个原始指针或shared_ptr,基于传递给actor的内容。
您应该继续使用variant<>
,但不是将您的大类存储为对象,而是将其存储为指针:
boost::variant<common_case*, huge_class*>
既然你说你通常存储一个指针,这不会花费你任何东西,并且回收100%浪费的内存,因为所有对象指针都是相同的大小。
相关文章:
- 如果C++类在类方法中具有动态分配,但没有构造函数/析构函数或任何非静态成员,那么它仍然是POD类型吗
- 为什么在没有显式默认构造函数的情况下,将另一个结构封装在联合中作为成员的结构不能编译
- 继承:构造函数,初始化C++11中基类的类C数组成员
- C++-我可以创建另一个类的成员并在构造函数中使用它吗
- 如果基类包含双指针成员,则派生类的构造函数
- 为什么类中的ostringstream类型的成员会导致";调用隐含删除复制构造函数";错误
- constexpr构造函数需要常量成员函数时出现问题
- 如何在c++中定义以struct为数据成员的类中的构造函数
- 在作为静态成员包含在另一个类中的类的构造函数中使用 cout
- 在成员构造函数之后调用基类构造函数
- C++:如何在对象构造过程中调用初始值设定项列表之外的成员构造函数
- 用作成员构造函数参数的函数的求值顺序
- 从成员构造函数(Brace Initializer vs Initializer列表)抛出异常
- 不正确的成员构造函数定义
- 我可以基于模板参数将某个值传递给成员构造函数吗
- 在类定义中调用成员构造函数
- 使用已删除的副本构造函数和初始值设定项列表重载调用类定义中的成员构造函数
- 正在从成员构造函数调用虚拟函数
- c++初始化类成员构造函数
- c++模板限制成员构造函数