鱼C论坛

 找回密码
 立即注册
查看: 111|回复: 1

C++模板类编译出错

[复制链接]
发表于 2024-3-19 17:31:49 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
把模板类例子按模块写编译老是无法通过:undefined reference to `Stack<int>::Stack(unsigned int)'

ps: 写一个文件可以,声明与定义写一块也可以

大佬们看看哪里出错了?

main.zip

900 Bytes, 下载次数: 2

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-3-19 17:32:10 | 显示全部楼层
这个错误提示是因为在你的代码中找不到 `Stack::Stack(unsigned int)` 的定义。出现这种情况一般有以下几种可能性:

1. 类的构造函数未定义或者定义错误。请确保你在类中正确地定义了构造函数,并且参数列表与声明一致。

2. 定义和声明不在同一个文件中。模板类的实现通常需要在同一个文件中进行,以便编译器能够正确地处理模板的声明和实例化。请确保你的模板类的定义和声明在同一个文件中。

3. 未实例化模板类。模板类的定义实际上只是一种模板,在使用时需要根据具体的类型进行实例化。请确保你在使用模板类之前已经对其进行了实例化。

下面是一个简单的示例,演示如何定义和使用一个基本的模板栈类:

  1. // Stack.h
  2. #ifndef STACK_H
  3. #define STACK_H

  4. template <typename T>
  5. class Stack {
  6. public:
  7.     Stack(unsigned int size);
  8.     // 其他成员函数...

  9. private:
  10.     T* elements;
  11.     unsigned int size;
  12. };

  13. template <typename T>
  14. Stack<T>::Stack(unsigned int size) {
  15.     this->size = size;
  16.     elements = new T[size];
  17. }

  18. // 其他成员函数的实现...

  19. #endif

  20. // main.cpp
  21. #include "Stack.h"

  22. int main() {
  23.     Stack<int> intStack(10);
  24.     // 使用 intStack 进行操作...
  25.     return 0;
  26. }
复制代码


在这个示例中,`Stack` 类的定义和声明都在 `Stack.h` 文件中,并且模板类型 `T` 根据实际使用情况进行了实例化。如果你仍然遇到问题,请提供更多的代码以便我们更详细地分析。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-28 19:26

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表