我如何执行以下操作,而不必在此文件中包含每个类T?

// ComponentMan.h
class ComponentMan
{
public:
    template<class T>
    void CreateComponent<T>()
    {
        T* temp = new T();
    }
}


基本上,我想要一个通用的类实例化器。如何在不包含标头的情况下实现此目标?

最佳答案

您反过来做;您可以在要使用它的所有位置包括“ ComponentMan.h”。例如。:

foo.h

class Foo {
    ...
};


blah.cpp

#include "foo.h"
#include "ComponentMan.h"

void bar() {
    ComponentMan man;
    man.CreateComponent<Foo>();
}

07-24 14:09