如何根据字符串定义变量.我已经定义了很多类.但是我想根据一些字符串创建这个类的变量.
代码看起来像这样.
class AA {};
class BB {};
class CC {
CC(void *pt);
virtual ~CC();
};
......
void test(char *ss,void *pt=NULL) {
//??????How to do?
}
int main() {
a1=test("AA"); //a1=new AA();
a2=test("AA"); //a2=new AA();
b1=test("BB"); //b1=new BB();
c1=test("CC",pt); //c1=new CC(pt);
}
Run Code Online (Sandbox Code Playgroud)
另外,您可以将其视为URL和句柄函数.std :: map是根据string获取类实例的常用方法.但是无法为变量创建新实例.我希望根据字符串获取一个新实例.
C++是一种强类型语言,因此现在不可能实现这一点.
最好的情况下,你会使用一个共同的基类AA,BB,CC然后用一个工厂.你不能只写:
a1=test("AA"); //a1=new AA();
a2=test("AA"); //a2=new AA();
b1=test("BB"); //b2=new BB();
c1=test("CC",pt); //b2=new CC(pt);
Run Code Online (Sandbox Code Playgroud)
没有为变量定义类型.
例如:
class Base{};
class AA : public Base {};
class BB : public Base {};
Base* create(const std::string& what)
{
if (what == "AA")
return new AA;
if (what == "BB")
return new BB;
return NULL;
}
int main()
{
Base* a;
a = create("AA");
}
Run Code Online (Sandbox Code Playgroud)
或者,您应该使用智能指针.如果你不这样做,你将不得不自己管理内存.
| 归档时间: |
|
| 查看次数: |
154 次 |
| 最近记录: |