相关疑难解决方法(0)

为什么模板只能在头文件中实现?

引自C++标准库:教程和手册:

目前使用模板的唯一可移植方法是使用内联函数在头文件中实现它们.

为什么是这样?

(澄清:头文件不是唯一的便携式解决方案.但它们是最方便的便携式解决方案.)

c++ templates c++-faq

1660
推荐指数
14
解决办法
46万
查看次数

使用模板时,为什么会出现"未解析的外部符号"错误?

当我使用模板为类编写C++代码并在源(CPP)文件和标题(H)文件之间拆分代码时,在链接最终可执行文件时会出现大量"未解析的外部符号"错误,尽管目标文件正确构建并包含在链接中.这里发生了什么,我该如何解决?

c++ linker templates

92
推荐指数
2
解决办法
6万
查看次数

包括.cpp文件

我在这里读过你必须包含.h文件而不是.cpp文件,因为否则会出错.所以举个例子

main.cpp中

#include <iostream>
#include "foop.h"

int main(int argc, char *argv[])
{
int x=42;
std::cout << x <<std::endl;
std::cout << foo(x) << std::endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)

foop.h

#ifndef FOOP_H
#define FOOP_H
int foo(int a);
#endif
Run Code Online (Sandbox Code Playgroud)

foop.cpp

int foo(int a){
    return ++a;
}
Run Code Online (Sandbox Code Playgroud)

作品,但如果我更换#include "foop.h"#include "foop.cpp"我得到一个错误(使用开发C++ 4.9.9.2,Windows中):

multiple definition of foo(int)
first defined here
Run Code Online (Sandbox Code Playgroud)

为什么是这样?

c++

49
推荐指数
5
解决办法
12万
查看次数

为什么模板类的实现和声明应该在同一个头文件中?

为什么模板类的实现和声明应该在同一个头文件中?你能不能通过例子解释一下?

c++ templates

38
推荐指数
2
解决办法
1万
查看次数

标签 统计

c++ ×4

templates ×3

c++-faq ×1

linker ×1