从类名转换的 C++ 指针类型 [关闭]
Posted
技术标签:
【中文标题】从类名转换的 C++ 指针类型 [关闭]【英文标题】:C++ Pointer type cast from class name [closed] 【发布时间】:2013-09-22 22:56:00 【问题描述】:如何在 C++ 中从 String 中的类名转换指针?
伪代码:
int * ptr = something;
myStruct ptrstruct = (ClassFromString("myStruct") ptr);
// The class/struct name is passed in as String
谢谢
【问题讨论】:
不清楚;你想让这段代码做什么? 我不认为C++直接支持这种反射。 也许您正在寻找“类工厂”设计模式。这可以很容易地用 C++ 实现,但不是语言特性。 如果你有这样的方法,也许你可以描述你想解决的问题? 【参考方案1】:我不是 C++ 大师,但我有两个想法可能有助于头脑风暴:
希望使用此处描述的注册表模式会有所帮助:Instantiate class from name? 其次,按照注册表模式的想法,您可以创建一个用于强制转换的函数,例如MyClass something = registry.cast("MyClass", ptr);
【讨论】:
【参考方案2】:我不确定,但这必须有效 如果发生这种情况,只有 Void 指针或 boost 可以提供帮助
thing * p = something; // pointer to object
void * pv = p; // pointer to void
thing * p2 = static_cast<thing *>(pv); // pointer to the same object
也许同样的情况是在从线程返回值时 在 c++ 中不可能进行整体反射。 它只是头脑风暴。
【讨论】:
这看起来与 OP 的要求几乎完全无关。 我看到你在这里做了什么,但是我认为你没有理解这个问题 - 部分原因是我的措辞不好。但作为一个例子:像这样thing * p2 = static_cast<"thing *">(pv);
你看到我在那里做了什么吗?这就是我想要得到的效果。以上是关于从类名转换的 C++ 指针类型 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
C++ 编译时提示:不能将参数 1 从“char [6]”转换为“LPCTSTR”