目標: 2 つのテンプレート パラメーターを持つクラスから継承する。
エラー
エラー エラー C2143: 構文エラー: '<' の前に ',' がありません
コード
template< typename Type >
class AssetManager : public IsDerivedFromBase< Type, Asset* >
{
// Class specific code here
};
知っておくべきこと:char*
Asset は、を getter/setter でラップするだけのクラスであり、基本的にが の派生物であるIsDerivedFromBase
かどうかをテストするために使用されます。これらのクラスのセットは、独自の小規模な Visual Studio 2012 プロジェクトに分離されており、すべての機能が完全にテストされると、メイン プロジェクトに統合されます。Type
Asset
コメントに基づくいくつかの編集
これまでご愛顧いただき、誠にありがとうございました。いくつかの詳細を次に示します。
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
注: このクラスは、記事で読んだクラスに基づいています。それ以来、望ましい結果を達成するためのより良い方法を見つけました。ただし、このエラーの原因を理解したいと思います。
AssetManager.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
クラス固有のコードを最小限に抑えて、この投稿をできるだけきれいに保ちます。さらに情報が必要な場合はお知らせください。追加できます:)。