我有迪莱玛,很高兴听到一个在c++方面更有经验的人。确切地说,我的dilema是如何管理(创建)对象的初始化数据。例如,我有几个对象,每个对象都需要自己独特的数据集来初始化这个对象。每个对象在应用程序开始时被初始化,之后不需要它的初始化数据。对于如何做到这一点,我有两个想法,我想寻求更好的建议(在编译的可执行文件的大小和可选的运行时内存使用方面)。
想法1(示例):
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(示例):
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选择要分配的数据集。
发布于 2021-06-16 18:43:50
有一个非常简单的选择:
#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*
}https://stackoverflow.com/questions/68007832
复制相似问题