gpt4 book ai didi

C++ 方法的多重定义或 undefined reference

转载 作者:行者123 更新时间:2023-11-28 04:39:48 25 4
gpt4 key购买 nike

我用 C++ 创建了一个项目,我需要一些方法在我的类中是虚拟的。所以当我在我的 main.cpp 中包含“类”.h 时,编译器说 undefined reference 我的方法,当我改变“class".h 到 "class".cpp 它说首先在 main.o 中定义,在 class.cpp 中定义多个

class Avl {

public:

Avlnode* insert(unsigned int key , Avlnode *root);
AvlofAvlnodes* insert(unsigned int key, unsigned int neighbors[],int size, AvlofAvlnodes *id );

template <typename nodeptr>
bool findElement(unsigned int element, nodeptr* root);
bool findConecion(unsigned int id, unsigned int neighbor,AvlofAvlnodes* root);

Avlnode* deletion(Avlnode* root,unsigned int key );
void deletion(unsigned int key , unsigned int neighbor,AvlofAvlnodes* root);

// methods to help avl
template <typename nodeptr>
nodeptr* rightRotate(nodeptr* root);
template <typename nodeptr>
nodeptr* leftRotate(nodeptr* root);

int max(int a,int b);
template <typename nodeptr>
int height(nodeptr* root);
template <typename nodeptr>
int getBalance(nodeptr* root);
template <typename nodeptr>
nodeptr* minValueNode(nodeptr* root);
template <typename nodeptr>
void preOrder(nodeptr* node);

};

最佳答案

你总是包含“class.h”,而不是“class.cpp”。这是因为 #include 是在编译阶段处理的,而不同的 .cpp 文件是在链接阶段拼凑在一起的。更准确地说,每个 .cpp 文件都被翻译成一个目标文件,然后将它们链接起来。

您缺少的虚拟方法是缺少目标文件的结果。我们知道 main.cpp 是,但是“class.cpp”是编译的吗?

关于C++ 方法的多重定义或 undefined reference ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50489565/

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