【问题标题】:C++ Pointer type cast from class name [closed]从类名转换的 C++ 指针类型 [关闭]
【发布时间】: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++ 实现,但不是语言特性。
  • 如果你有这样的方法,也许你可以描述你想解决的问题?

标签: c++ pointers


【解决方案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&lt;"thing *"&gt;(pv);你看到我在那里做了什么吗?这就是我想要得到的效果。
    猜你喜欢
    • 2021-09-20
    • 1970-01-01
    • 2015-01-19
    • 2016-12-14
    • 1970-01-01
    • 2020-11-17
    • 1970-01-01
    • 2020-12-24
    相关资源
    最近更新 更多