gpt4 book ai didi

c++ - 在子类中调用基类的模板函数是否合法?

转载 作者:行者123 更新时间:2023-11-28 08:11:03 25 4
gpt4 key购买 nike

<分区>

Possible Duplicate:
“Undefined reference to” template class constructor

我刚开始使用模板,我在犹豫在子类中调用模板函数是否真的合法。我的问题是下面代码中的模板函数 ChangeSprite。它在子类中被调用,但这会产生链接错误。如果我删除模板部分,只给它一个我计划使用它的多个东西之一,而不是它工作正常,所以我担心我无法做到这一点。

//base class
#pragma once
#include "Tile.h"
#include <list>
#include "Sprite.h"
#include "WindowCreater.h"
#include "Directx.h"
#define LeftClickParameters WindowCreator *gw, Mouse* mouse
struct Grid
{

SPRITE *sprite;
int width, hieght;
int w, h;
int x, y;
Grid(int width, int hieght,SPRITE *sprites);
list<Tile> tilew;
list<list<Tile>> tileh;

//methods

void savefile();
void openfile();
virtual void MoveLeft() = 0;
virtual void MoveRight() = 0;
virtual void MoveUp() = 0;
virtual void MoveDown() = 0;
virtual void addrow() = 0;
virtual void deleterow() = 0;
virtual void addcolumb() = 0;
virtual void deletecolumb() = 0;

//template functions
template <class T> void ChangeSprite(SPRITE *newSprite,list<T> tilew,list<list<T>> tileh);

// Virtual methods
virtual list<Tile> ReadTiles() = 0;
};

这就是它被调用的地方

 //how the function is being called
void Map::Brush(SPRITE *newSprite, POINT MousePosition)
{
Grid::ChangeSprite<MapTile>(newSprite,mapTilew,mapTileh);
}

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com