gpt4 book ai didi

c++ - 多个 C++ 文件导致 "multiple definition"错误?

转载 作者:行者123 更新时间:2023-11-30 00:53:01 24 4
gpt4 key购买 nike

我第一次在一个项目中使用多个 C++ 文件。两者都需要包含一个 protected (#ifndef) 头文件。但是,当我这样做时,出现多重定义错误。

我有两个 .cpp 文件直接调用 header ,一个间接调用 header (另一个包含它),然后是另外两个包含它的 header 文件。

那么我需要做什么来消除错误?

错误:

obj\Debug\main.o||In function Z14sortLibQtyTest4BookS_':|
[PATH]\miscFuncs.h|16|multiple definition of
sortLibQtyTest(Book, Book)'

代码:

bool sortLibQtyTest(Book a, Book b){ return a.getQty() > b.getQty(); }

应该提到的是,这不是给我带来问题的唯一函数,可能有十多个,而且有些不是那么简短。此外,多个文件中需要这些函数。

最佳答案

您有两种选择来解决这个多重定义问题:将方法标记为内联,或将定义放在 .cpp 文件中。

1) 将方法标记为内联:

// Foo.h

inline bool foo(int i) { return i = 42; }

2) 将定义放在.cpp文件中:

// Foo.h

inline bool foo(int i); // declaration

// Foo.cpp
bool foo(int i) { return i = 42; } // definition

在第一种情况下,该方法是否实际上被编译器内联在这里无关紧要:inline 允许您在头文件中定义非成员函数,而不会破坏 one 定义规则。

关于c++ - 多个 C++ 文件导致 "multiple definition"错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17646959/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com