使模板成员函数实例化给定类类型的对象[英] Make templated member function instantiate object of given class type

问题描述

假设我有两个类 A 和 B.我希望 A 有一个模板函数"makeObject()",它创建一个给定类模板类型的新对象并将其存储在内部.

下面是正确的吗?

展开|选择|Wrap|行号
解决方案
我修复了你的代码.将我所做的与原始代码进行比较.


从类定义之外调用成员函数时,不要忘记将它们设为公开.




展开|选择|换行|行号span>

不完全是,但我很感激你的努力:-)

我认为您错过了"内部存储"的部分.问题是新对象不应该被发送出去,而是存储在里面.

忘了说的一件事:createObject函数的返回是新对象的id(或者game-id)(所以里面返回0就可以了).

主要区别在于模板类在您的代码中用作函数的返回类型,但在我的代码中没有.

createObject 成员函数将要存储创建对象作为其类中的私有成员变量.这意味着一个 T 类型的成员变量.这意味着一个模板类.

一种解决方法是在创建的对象上使用多态性,这样类只需要存储一个基类指针.

如果这不起作用,您可以设计一个包并将包保留在类对象中,并使用包处理程序将创建的对象移入和移出.

您可能会查看 Microsoft 和 VARIANT.需要大量类型转换,但易于使用.

本文地址:https://www.itbaoku.cn/post/1050689.html