我正在编写一个"Effect“类(用于opengl程序),同时我也在尝试为编写一个容器类。
Effect类的定义如下:
template <typename T>
class Effect
{
private:
Vbo<T> m_Vbo;
};其中T是描述顶点属性的类型。
为了编写容器类,我想将这些效果存储在std::map:
class EffectMgr : public Singleton <EffectMgr>
{
private:
typedef std::map<std::string, Effect<T> & > EffectMap;
};关于container类我得到的错误是T是未定义的。有没有人能开导我?
我可能已经找到了答案(完全是偶然的),尽管我只有在写完容器类后才能知道:
class EffectMgr : public Singleton <EffectMgr>,
{
private:
template <typename T>
typedef std::map<std::string, Effect<T> & > EffectMap;
};发布于 2012-02-05 22:52:01
由于Effect是一个模板类,并且您没有在EffectMgr中对其进行专门化,因此它也需要是一个模板:
template<typename T>
class EffectMgr : public Singleton <EffectMgr>
{
private:
typedef std::map<std::string, Effect<T> & > EffectMap;
};https://stackoverflow.com/questions/9150139
复制相似问题