c++11根据不同传入的字符串,来创建不同的类多种方法
时间: 2023-11-28 22:47:36 浏览: 20
在C++11中,可以利用工厂模式来根据不同的字符串创建不同的类。具体实现步骤如下:
1. 定义一个抽象基类,该类包含一个纯虚函数用于创建具体的类。假设这个基类叫做`BaseClass`,具体的类有`ClassA`和`ClassB`。
```
class BaseClass {
public:
virtual ~BaseClass() {}
virtual BaseClass* create() = 0;
};
```
2. 实现具体的类,这里以`ClassA`为例。
```
class ClassA : public BaseClass {
public:
virtual BaseClass* create() {
return new ClassA();
}
};
```
3. 创建一个工厂类,用于根据传入的字符串创建不同的类。假设这个工厂类叫做`Factory`。
```
class Factory {
public:
static BaseClass* createClass(const std::string& className) {
if (className == "ClassA") {
return new ClassA();
} else if (className == "ClassB") {
return new ClassB();
}
return nullptr;
}
};
```
4. 在代码中调用工厂类的静态函数来创建具体的类。
```
std::string className = "ClassA";
BaseClass* object = Factory::createClass(className);
```
这样,根据不同的字符串就可以创建不同的类。需要注意的是,如果有新的具体类需要添加,需要在工厂类中添加相应的判断逻辑。