声明并实现函数后,main仍然找不到该函数

问题描述 投票:0回答:1

当我在主函数中声明、实现和调用函数时,我的编译器仍然报告无法通过外部符号解决的错误;我的所有代码如下;问题详细信息在“*”之间。

具体错误语句为: 1.LNK2019 无法解析的外部符号 "void __cdecl CreateBinaryTree(void)" (?CreateBinaryTree@@YAXXZ),函数 main 中引用了该符号 DataStructure C:\Users\lenovo\Desktop\Code\Visual、Studio\DataStructure\BinaryTree .obj 2.LNK2019无法解析的外部符号 "void __cdecl ShowBinaryTree(void)" (?ShowBinaryTree@@YAXXZ),函数 main 中引用了该符号 DataStructure C:\Users\lenovo\Desktop\Code\Visual Studio\DataStructure\BinaryTree。对象 3.LNK2019无法解析的外部符号 "void __cdecl InsertInOrderThreadTree(void)" (?InsertInOrderThreadTree@@YAXXZ),函数 main 中引用了该符号 DataStructure C:\Users\lenovo\Desktop\Code\Visual Studio\DataStructure\BinaryTree。对象 1
4.LNK2019无法解析的外部符号 "void __cdecl InOrderThreadTree(void)" (?InOrderThreadTree@@YAXXZ),函数 main 中引用了该符号 DataStructure C:\Users\lenovo\Desktop\Code\Visual Studio\DataStructure\BinaryTree。对象 5.LNK2019无法解析的外部符号 "void __cdecl Traversal(void)" (?Traversal@@YAXXZ),函数 main 中引用了该符号 DataStructure C:\Users\lenovo\Desktop\Code\Visual Studio\DataStructure\BinaryTree。对象 1

#include<bits/stdc++.h>
using namespace std;
#define MaxSize 100

template<class T>
struct LinkNode {
    //implement
};

template<class T>
struct ThreadNode {
    //implement
};

template<class T>
struct TreeNode {
    //implement
};

template<class T>
class MyStack {
        //implement
};

template<class T>
LinkNode<T>* root;
template<class T>
ThreadNode<T>* threadNode;

//*************************************************************************************
void CreateBinaryTree();
void ShowBinaryTree();
void InsertInOrderThreadTree();
void InOrderThreadTree();
void InsertInOrderThreadTree();
void Traversal();

int main() {
    CreateBinaryTree();
    ShowBinaryTree();
    Traversal();
    InsertInOrderThreadTree();
    InOrderThreadTree();
}
//*************************************************************************************

//选择遍历方式
template<class T>
void Traversal() {
    //implement
}

//RecursiveTraversal
template<class T>
void preOrder(LinkNode<T>* p) {
    //implement
}

template<class T>
void inOrder(LinkNode<T>* p) {
    //implement
}

template<class T>
void postOrder(LinkNode<T>* p) {
    //implement
}

//nonRecursiveTraversal
template<class T>
void nonRecursivePreOrder(LinkNode<T>* p) {
    //implement
}

template<class T>
void nonRecursiveInOrder(LinkNode<T>* p) {
    //implement
}

template<class T>
void nonRecursivePostOrder(LinkNode<T>* p) {
    //implement
}

template<class T>
void InThread(ThreadNode<T>*& p,ThreadNode<T>*& pre) {
    //implement
}

template<class T>
void InOrderThreadTree() {
    //implement
}

template<class T>
void InsertInOrderThreadTree() {
    //implement
    
}

template<class T>
void CreateBinaryTree() {
    //implement
}

template<class T>
void ShowBinaryTree() {
    //implement
}


我希望有人能回答我的问题。我将不胜感激。

c++ function binary-tree nullreferenceexception traversal
1个回答
0
投票

问题是你已经声明你的函数为非模板但是定义/实现它们作为模板。

要解决此问题,您可以将这些函数的定义更改为非模板化,如下所示。

//made this non-template by removing template<T>
void InOrderThreadTree() {
    //implement
}

//made this non template
void InsertInOrderThreadTree() {
    //implement
    
}

//made this definition non template
void CreateBinaryTree() {
    //implement
}

工作演示


另外为什么我不应该#include

© www.soinside.com 2019 - 2024. All rights reserved.