首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何管理对象的初始化数据?

如何管理对象的初始化数据?
EN

Stack Overflow用户
提问于 2021-06-16 17:56:26
回答 1查看 52关注 0票数 0

我有迪莱玛,很高兴听到一个在c++方面更有经验的人。确切地说,我的dilema是如何管理(创建)对象的初始化数据。例如,我有几个对象,每个对象都需要自己独特的数据集来初始化这个对象。每个对象在应用程序开始时被初始化,之后不需要它的初始化数据。对于如何做到这一点,我有两个想法,我想寻求更好的建议(在编译的可执行文件的大小和可选的运行时内存使用方面)。

想法1(示例):

代码语言:javascript
复制
struct A
{
  static int data1;
  static float data2;
  static char data3;
};

int A::data1 = 1;
float A:data2 = 1.5;
char A::data3 = 'c';

int main()
{
  *do something with this data*
}

想法2(示例):

代码语言:javascript
复制
struct A
{
  int data1;
  float data2;
  char data3;

  A()
  {
    data1 = 1;
    data2 = 1.5;
    data3 = 'c';
  }

};

int main()
{
  A a;

  *do something with this data*
}

将有几个不同的对象要初始化,每种类型的对象可以创建不止一次,因此在第一个示例中,我需要为具有相同类型的多个对象创建具有唯一数据的多个结构,在第二个示例中,我可以传递给构造函数A::A()索引,在构造函数中使用switch选择要分配的数据集。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-06-16 18:43:50

有一个非常简单的选择:

代码语言:javascript
复制
#include <stdexcept>

struct A
{
  int data1;
  float data2;
  char data3;
};

A factory(int option)
{
    switch (option)
    {
        case 0:
            return {1, 1.5, 'c'};
        case 1:
            return {2, 3, 'f'};
        case 2:
            return {42, 3.14, 'p'};
        default:
            throw std::runtime_error("bad option!");
    }
}

int main()
{
  A a = factory(get_init_option());  
  *do something with this data*
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68007832

复制
相关文章

相似问题

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