相关疑难解决方法(0)

在C++中动态声明数据类型

我希望能够做到以下几点:

我有一个包含数据类型的字符串数组:

string DataTypeValues[20] = {"char", "unsigned char", "short", "int"};
Run Code Online (Sandbox Code Playgroud)

然后,我想在运行时创建一个数据类型的变量.我不会在编译时知道正确的数据类型应该是什么.

因此,例如,如果在运行时我确定变量x需要是int类型:

DataTypeValues[3] x = 100;
Run Code Online (Sandbox Code Playgroud)

显然这不起作用,所以我怎么能这样做呢?

c++

10
推荐指数
2
解决办法
1万
查看次数

工厂方法设计模式

根据这本书:

工厂模式的本质是"定义用于创建对象的接口,但让子类决定实例化哪个类.Plant方法允许类将实例化延迟到子类.

说我有一个创作者类:

class Product; //this is what the Factory Method should return
class Creator {
    public:
        Creator()   //ctor
        { //... }

        virtual Product make(//args)
        { //... }
}
Run Code Online (Sandbox Code Playgroud)

好吧,这是我的创作者课程,但我不明白

Factory方法允许类将实例化延迟到子类

它与子类有什么关系?我应该使用什么子类?

有谁可以给​​我一些例子?

design-patterns factory-method

6
推荐指数
1
解决办法
5981
查看次数

枚举值(int)到类型的动态映射

看来这个问题在我们的工作中非常普遍.

我们通过网络发送int或enum值,然后我们收到它我们想要创建/调用特定的对象/函数.

最简单的解决方案是使用switch语句,如下所示:

switch (value) {
    case FANCY_TYPE_VALUE: return new FancyType();
}
Run Code Online (Sandbox Code Playgroud)

它工作正常,但我们会有很多这些开关块,当我们创建新的值和类型时,我们需要更改所有这些.看起来确实如此.

其他可能性是使用模板.但我们不能,因为枚举的值是在运行时定义的.

是否有任何正确的设计模式,或任何正确的方法?

这似乎是每天编码中非常普遍和常见的问题......

c++ mapping enums

4
推荐指数
1
解决办法
6656
查看次数

标签 统计

c++ ×2

design-patterns ×1

enums ×1

factory-method ×1

mapping ×1