雨中漫步~ 发表于 2022-3-14 12:11:32

c++类模板,将例题分开写,链接有问题

请问这个例子里的链接应该怎样修改?

jhq999 发表于 2022-3-14 19:50:53

#include <iostream>
#include <string>
#include "acheivement.cpp"



int main()
{
    Stack<int> intStack(100);
    intStack.push(1);
    intStack.push(2);
    intStack.push(3);

    std::cout << intStack.pop() << "\n";
    std::cout << intStack.pop() << "\n";
    std::cout << intStack.pop() << "\n";

    return 0;
}

930552489 发表于 2022-3-14 21:05:19

使用类模板时需要将cpp文件中的内容写在头文件中,不能分开写;或者你可以将对应的方法实现写在main.cpp中
原因是:模板定义很特殊。由template<…>处理的任何东西都意味着编译器在当时不为它分配存储空间,它一直处于等待状态直到被一个模板实例告知。在编译器和连接器的某一处,有一机制能去掉指定模板的多重定义。所以为了容易使用,几乎总是在头文件中放置全部的模板声明和定义。

jhq999 发表于 2022-3-14 21:29:56

930552489 发表于 2022-3-14 21:05
使用类模板时需要将cpp文件中的内容写在头文件中,不能分开写;或者你可以将对应的方法实现写在main.cpp中
...

所以vs自带的也是#include <stack>,而不是头文件形式

雨中漫步~ 发表于 2022-3-14 21:51:46

930552489 发表于 2022-3-14 21:05
使用类模板时需要将cpp文件中的内容写在头文件中,不能分开写;或者你可以将对应的方法实现写在main.cpp中
...

感谢

雨中漫步~ 发表于 2022-3-14 21:52:32

jhq999 发表于 2022-3-14 21:29
所以vs自带的也是#include ,而不是头文件形式

了解了,非常感谢

hornwong 发表于 2022-3-14 23:13:51

{:5_95:}

6YKT6ZKm5LqI 发表于 2023-1-26 22:32:36

今天学习的时候也遇到了这个问题
解决: https://cloud.tencent.com/developer/article/1796007
页: [1]
查看完整版本: c++类模板,将例题分开写,链接有问题