目标:从具有 2 个模板参数的类继承。
错误
错误错误 C2143:语法错误:在 '<' 之前缺少 ','
编码
template< typename Type >
class AssetManager : public IsDerivedFromBase< Type, Asset* >
{
// Class specific code here
};
您需要知道的事情: Asset 是一个仅用char*
getter/setter包装 a 的类,IsDerivedFromBase
将用于基本测试是否Type
是Asset
. 这些类集被隔离在自己的小型 Visual Studio 2012 项目中,一旦所有功能都经过彻底测试,它们将被集成到主项目中。
基于评论的一些编辑
谢谢你到目前为止的帮助,我真的很感激。以下是一些更具体的内容:
IsDerivedFromBase.h
#ifndef ISDERIVEDFROMBASE_H
#define ISDERIVEDFROMBASE_H
#include< iostream > // For access to NULL
namespace Fenrir
{
template< typename Type, typename Base >
class IsDerivedFromBase
{
private:
static void Constraints( Type* _inheritedType )
{
Base* temp = NULL;
// Should throw compiler error if
// this assignment is not possible.
temp = _inheritedType;
}
protected:
IsDerivedFromBase( ) { void( *test )( Type* ) = Constraints; }
};
}
#endif
注意:本课程基于我在一篇文章中读到的课程。从那以后,我找到了一种更好的方法来达到预期的效果;但是,我希望了解此错误的根源。
资产管理器.h"
#ifndef ASSETMANAGER_H
#define ASSETMANAGER_H
#include "IsDerivedFromBase.h"
namespace Fenrir
{
template< typename Type >
class AssetManager : public IsDerivedFromBase< Type, Asset* >
{
// Class specific code
};
}
#endif
将特定于类的代码保持在最低限度,以使这篇文章尽可能整洁,如果需要更多信息,请告诉我,我可以将其添加:)。