问下this指针该怎么作为参数传递

yxlovemoney 2014-09-18 05:26:57
因为某些需要,在后面的几个类里都要用到一个相当的方法,于是我把该功能直接弄成一个类,如下

头文件
class CreateShoesLists
{
public:
CreateShoesLists(void);
~CreateShoesLists(void);
// 公共方法
template<typename T>
void createShoesListMethod(T* shoesObj);
};

CPP文件
template<typename T>
void CreateShoesLists::createShoesListMethod(T* shoesObj)
{
// 实现功能
}




然后我在类B中,这样调用时

CreateShoesLists *shoeListObj = new CreateShoesLists();
shoeListObj->createShoesListMethod<SandalShow>(this);



报了这样的错误
error LNK2019: 无法解析的外部符号 "public: void __thiscall CreateShoesLists::createShoesListMethod<class SandalShow>(class SandalShow *)" (??$createShoesListMethod@VSandalShow@@@CreateShoesLists@@QAEXPAVSandalShow@@@Z),该符号在函数 "public: virtual bool __thiscall SandalShow::init(void)" (?init@SandalShow@@UAE_NXZ) 中被引用

请问是哪里出了问题了呢??
...全文
579 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
MA_XILAI 2014-09-20
  • 打赏
  • 举报
回复
引用 9 楼 yxlovemoney 的回复:
[quote=引用 2 楼 mujiok2003 的回复:] 模板定义不要放在CPP
谢谢,学习到了[/quote] 对于不同的类型,模板实际上都会去生成不同的代码.如果放在CPP文件,这样就生成不了不同的代码了. 放在.h文件里面,编译器才知道要生成对应什么类型的函数体.
yxlovemoney 2014-09-19
  • 打赏
  • 举报
回复
引用 2 楼 mujiok2003 的回复:
模板定义不要放在CPP
谢谢,学习到了
yxlovemoney 2014-09-19
  • 打赏
  • 举报
回复
引用 1 楼 j8daxue 的回复:
实现放h; 或放inl,使用它的cpp再include实现的inl
谢谢,确实 好使,但还不知道inl是啥
JoeBlackzqq 2014-09-18
  • 打赏
  • 举报
回复
引用 5 楼 lovesmiles 的回复:
[quote=引用 4 楼 JoeBlackzqq 的回复:] [quote=引用 2 楼 mujiok2003 的回复:] 模板定义不要放在CPP
模板定义放在CPP中应该是可以的吧?[/quote] 不可以,至少在c++11之前肯定不行。[/quote] 看你说的很肯定啊。我是没有测试过,呵呵,所以先来问问
mujiok2003 2014-09-18
  • 打赏
  • 举报
回复
引用 4 楼 JoeBlackzqq 的回复:
[quote=引用 2 楼 mujiok2003 的回复:] 模板定义不要放在CPP
模板定义放在CPP中应该是可以的吧?[/quote] 可以,但是只能那个Cpp中可以使用,其他Cpp中要使用的话,就会找不到定义。 这个正是你的问题。
勤奋的小游侠 2014-09-18
  • 打赏
  • 举报
回复
引用 4 楼 JoeBlackzqq 的回复:
[quote=引用 2 楼 mujiok2003 的回复:] 模板定义不要放在CPP
模板定义放在CPP中应该是可以的吧?[/quote] 不可以,至少在c++11之前肯定不行。
JoeBlackzqq 2014-09-18
  • 打赏
  • 举报
回复
引用 2 楼 mujiok2003 的回复:
模板定义不要放在CPP
模板定义放在CPP中应该是可以的吧?
JoeBlackzqq 2014-09-18
  • 打赏
  • 举报
回复
在类外写的this是没有意义,编译器都无法知道这个this到底代表哪个类。
mujiok2003 2014-09-18
  • 打赏
  • 举报
回复
模板定义不要放在CPP
j8daxue 2014-09-18
  • 打赏
  • 举报
回复
实现放h; 或放inl,使用它的cpp再include实现的inl

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧