gpt4 book ai didi

c++ - 无法找出导致 "undefined reference to..."错误的原因

转载 作者:行者123 更新时间:2023-11-30 05:42:48 27 4
gpt4 key购买 nike

<分区>

我刚开始学习 C++ 编程语言,正在尝试实现二叉搜索树数据结构。

当我尝试编译我的文件时

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

然后我总是得到一些错误,说对某些成员函数有一个“ undefined reference ”,比如

main.o: In function `BSTree<int>::insert(int const&)':
main.cpp:(.text.#some-more-text#.+0x16): undefined reference to
`BSTree<int>::insert(BSTreeNode<int>*, int const&)'
collect2: error: ld returned 1 exit status

以下代码片段是一个极简示例:

二进制.hpp:

template<typename T>
class BSTreeNode {
public:
T key;
BSTreeNode<T> *left;
BSTreeNode<T> *right;

BSTreeNode(const T& key) : key(key), left(nullptr), right(nullptr) {};
};


template <typename T>
class BSTree {

protected:
BSTreeNode<T> *root;

public:
BSTree() {
root = nullptr;
}

void insert(const T& key) {
root = insert(root, key);
}

protected:
BSTreeNode<T>* insert(BSTreeNode<T>* node, const T& key);
};

二进制.cpp

#include "binary.hpp"

template<typename T>
BSTreeNode<T>* BSTree<T>::insert(BSTreeNode<T>* node, const T& key) {

if (not node) {
return new BSTreeNode<T>(key);
}

if (key < node->key) {
node->left = insert(node->left, key);
} else if (key > node->key) {
node->right = insert(node->right, key);
} else {
throw "Key already exists!";
}

return node;
}

主要.cpp:

#include "binary.hpp"
#include <math.h>

int main(){
BSTree<int> bt;

for (int i=0; i<10; i++){
bt.insert(pow(-1, i) * i);
}

即使经过详尽的搜索,我仍然无法弄清楚我的代码有什么问题。

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