抱歉标题令人困惑,但我会在这里尝试详细说明。我无法通过搜索找到这个特殊问题,所以如果我错过了,请指出我正确的线程......
我有一个依赖于我用作基类的一个参数的类模板:
template <class TVertex>
class DrawExecutorDX11
{
public:
DrawExecutorDX11( );
virtual ~DrawExecutorDX11( );
void AddVertex( const TVertex& vertex );
protected:
TGrowableVertexBufferDX11<TVertex> VertexBuffer;
};
我要做的就是继承这个类模板,同时给子类添加另一个类模板参数。我对语法的尝试是这样的:
template <class TVertex, class TInstance>
class DrawInstancedExecutorDX11<TInstance> : public DrawExecutorDX11<TVertex>
{
public:
DrawInstancedExecutorDX11( );
virtual ~DrawInstancedExecutorDX11( );
void AddInstance( const TInstance& data );
protected:
TGrowableVertexBufferDX11<TInstance> InstanceBuffer;
};
我希望这个配置可以让我像这样声明一个子类模板的实例:
DrawInstancedExecutorDX11<VertexStruct,InstanceStruct> myExecutor;
但是,VS2012 甚至不考虑编译子类,并表明它在 DrawInstancedExecutorDX11 类之后需要一个分号。老实说,我以前从未尝试过这种类型的模板排列,所以我想知道是否有其他人这样做过。如果是这样,是否存在我正在犯的基本语法错误或其他一些问题?提前感谢您提供的任何帮助或指导!