gpt4 book ai didi

C++ 'undefined reference to' 错误

转载 作者:行者123 更新时间:2023-11-27 22:59:06 29 4
gpt4 key购买 nike

我在编译 C++ 程序时遇到了其中一个“ undefined reference ”错误。我知道这是常见的陷阱,但到目前为止无法弄清楚我做错了什么。

这是相关代码。 Ex1Two_Sum.h:

#ifndef EX1TWO_SUM_H
#define EX1TWO_SUM_H

#include <vector>
using namespace std;

namespace ddc {
class Ex1Two_Sum
{
public:
void f();
protected:
private:
};
}

#endif

Ex1Two_Sum.cpp:

#include <vector>
#include <cstddef>
#include <iostream>

using namespace std;

namespace ddc {
class Ex1Two_Sum {
public:

void f(){
cout << "works" << endl;
}
};
}

最后,main.cpp:

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

using namespace std;
using namespace ddc;

int main()
{
Ex1Two_Sum ex1;
ex1.f();
return 0;
}

我编译如下:

g++ -std=c++11 -c Ex1Two_Sum.cpp 
g++ -std=c++11 -c main.cpp
g++ Ex1Two_Sum.o main.o

产生以下信息:

main.o: In function `main':
main.cpp:(.text+0x2c): undefined reference to `ddc::Ex1Two_Sum::f()'
collect2: error: ld returned 1 exit status

最佳答案

当它只需要提供非内联函数定义时,您的源文件使用内联函数定义重新定义了整个类。

#include "Ex1Two_Sum.h"

void ddc::Ex1Two_Sum::f() {
std::cout << "should work\n";
}

此外,请不要将 using namespace std; 放在 header 中。不是每个人都希望全局命名空间在 potentially surprising 中被污染方式。

关于C++ 'undefined reference to' 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29471529/

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