【发布时间】:2013-09-20 10:07:41
【问题描述】:
我是 C++ 新手。我对 C++ 中的多重定义错误有一些疑问。
假设我在一个程序中有 3 个文件。 1 个头文件和 2 个 .cpp 文件。我在两个 .cpp 文件中都包含了头文件。
- 我已经在头文件中声明了一个类,并以完全相同的方式在每个 .cpp 文件中定义了该类。那么这种类型的实现会不会导致多重定义错误呢?如果是这样,是不是因为它有两个类定义副本,而编译器在链接两个 .o 文件时不知道该取哪一个?
我们可以通过在头文件中使用extern并仅在其中一个文件中定义类来解决这个问题吗?如果我们可以通过使用这种方法解决问题,我们是否必须包含.cpp(带有类定义) 到其他 .cpp 文件中(没有类定义)?
我已经在头文件中声明并定义了一个类。这种情况和上面(1中提到的)一样吗?
我在头文件中声明了一个类,并在每个 .cpp 文件中定义了该类,但定义(函数体)不同。那么这种类型的实现会导致多重定义错误吗?如果是这样,我们如何解决.cpp文件中函数体不同的问题?
【问题讨论】:
标签: c++ compiler-errors linkage multiple-definition-error