在C ++中使用模板

用户名

我正在尝试使用模板来实现一棵红黑树。insert函数采用两种通用类型,即Item和Key。但是,当我在main()中创建RedBlackTree的实例并调用函数“ InsertKey”时,程序给出错误:无法解析方法“ InsertKey”。另外,我不知道在“ InsertKey”函数中作为参数传递什么。我实现了一个由随机元素组成的数组。数组应该是参数之一,但是我不知道另一个参数是什么。

这是我的头文件:

#ifndef REDBLACKTREE_H_
#define REDBLACKTREE_H_

template <class Item, class Key>
class RedBlackTree
{
    typedef enum
    {
        BLACK,
        RED
    }ColourNode;

    /* user data stored in tree */
    typedef struct {
        int data;
    } treedata;

    typedef struct RBT
    {
        struct RBT *left;
        struct RBT *right;
        struct RBT *parent;
        struct RBT *root;
        ColourNode colour;
        //Item item;
        Key key;
        treedata data;
    }RBTNode;

    public:
        ~RedBlackTree(); // destructor
        RedBlackTree(Item, Key); // default constructor

        void InsertKey(const Item *&, const Key *&);
        void FixingInsert(const Item *&, const Key *&);
        int RemoveKey(Item, Key);
        int FindKey(Item, Key);

    //private:
        //RedBlackTree<Item, Key> *rootPointer;

};

#endif /* REDBLACKTREE_H_ */

这是我的main()

#include <iostream>
#include <string>
#include <time.h>
#include <stdio.h>
#include <stdlib.h>
#include "RedBlackTree.h"

using namespace std;

int main(int argc, const char* argv[])
{

    const int arraysize = 200;
    int arr[arraysize];

    RedBlackTree<int, int> t1(int, int);

    srand((unsigned)time(0));
    for(int i = 0; i <= arraysize-1;  i++)
    {
        arr[i] = rand() % 210;
        //printf("%d ", arr[i]);
    }

    for(int i = 0; i <= arraysize-1;  i++)
    {
        t1.InsertKey(arr[i], // something else//); //InsertKey should have another parameter, but for now I am trying to figure out why it cannot be resolved. 
    }

}

另外,对其他东西可能有什么想法吗?我不知道该怎么办。

约瑟夫·曼斯菲尔德
RedBlackTree<int, int> t1(int, int);

在这里,您要声明一个函数t1该函数返回aRedBlackTree<int, int>并接受两个均为type的参数int

我认为您实际上是想创建一个RedBlackTree<int, int>对象并调用它t1它有一个构造函数,需要一个Item和一个Key但是,您已将其评论为是默认构造函数,而事实并非如此。默认构造函数是不带任何参数的构造函数。我认为您的意思是这样声明构造函数:

RedBlackTree(); // default constructor

然后,您可以创建这种类型的对象,如下所示:

RedBlackTree<int, int> t1;

您永远不会在普通的括号之间传递类型(int, int)它们总是放在尖括号之间,例如<int, int>和在模板名称之后。在这种情况下,模板名称为RedBlackTree,我们想使用int类型实例化它,所以我们这样做RedBlackTree<int, int>没有什么要传递给构造函数的。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在C ++中使用功能模板作为模板模板参数

来自分类Dev

在C ++元编程中使用模板

来自分类Dev

在C ++中使用模板和结构的困惑

来自分类Dev

C ++如何在模板中使用向量?

来自分类Dev

在C ++中使用数组和模板

来自分类Dev

C ++在类模板中使用函数模板

来自分类Dev

如何在C ++模板中使用比较表达式?

来自分类Dev

在C ++中使用可变参数模板迭代参数包

来自分类Dev

在C ++中使用堆栈模板类解析括号

来自分类Dev

在一类中使用模板和虚方法的C ++

来自分类Dev

如何在类C ++中使用模板化结构

来自分类Dev

c#如何在get属性中使用模板?

来自分类Dev

在C ++中的多个类中使用模板类

来自分类Dev

在C ++中使用模板编写函数时出现了分段错误

来自分类Dev

在C ++ 11中使用模板元编程连接列表

来自分类Dev

在C ++中使用堆栈模板类解析括号

来自分类Dev

C ++在模板声明中使用默认值

来自分类Dev

在C ++ std :: map中使用模板迭代器

来自分类Dev

在QVector中使用指针和非指针参数的C ++模板

来自分类Dev

如何在C hello World中使用Xtend模板?

来自分类Dev

c#中使用通用类型错误的模板

来自分类Dev

Qt C++ 在函数模板中使用约束

来自分类Dev

曾经在旧版gcc中使用的C ++模板在clang ++中导致“阴影模板参数”错误

来自分类Dev

曾经在旧版gcc中使用的C ++模板在clang ++中导致“阴影模板参数”错误

来自分类Dev

在C ++中使用带有默认模板参数的模板类时出现“模板参数过多错误”

来自分类Dev

如何在C ++中的另一个模板函数中使用属于模板化类的嵌套类型?

来自分类Dev

可以在C ++ 14 constexpr函数中使用for循环实例化模板吗?

来自分类Dev

在C ++中使用模板是否需要一些任务初始化?

来自分类Dev

在链表程序中使用模板时,在C ++中重载<<运算符

Related 相关文章

  1. 1

    在C ++中使用功能模板作为模板模板参数

  2. 2

    在C ++元编程中使用模板

  3. 3

    在C ++中使用模板和结构的困惑

  4. 4

    C ++如何在模板中使用向量?

  5. 5

    在C ++中使用数组和模板

  6. 6

    C ++在类模板中使用函数模板

  7. 7

    如何在C ++模板中使用比较表达式?

  8. 8

    在C ++中使用可变参数模板迭代参数包

  9. 9

    在C ++中使用堆栈模板类解析括号

  10. 10

    在一类中使用模板和虚方法的C ++

  11. 11

    如何在类C ++中使用模板化结构

  12. 12

    c#如何在get属性中使用模板?

  13. 13

    在C ++中的多个类中使用模板类

  14. 14

    在C ++中使用模板编写函数时出现了分段错误

  15. 15

    在C ++ 11中使用模板元编程连接列表

  16. 16

    在C ++中使用堆栈模板类解析括号

  17. 17

    C ++在模板声明中使用默认值

  18. 18

    在C ++ std :: map中使用模板迭代器

  19. 19

    在QVector中使用指针和非指针参数的C ++模板

  20. 20

    如何在C hello World中使用Xtend模板?

  21. 21

    c#中使用通用类型错误的模板

  22. 22

    Qt C++ 在函数模板中使用约束

  23. 23

    曾经在旧版gcc中使用的C ++模板在clang ++中导致“阴影模板参数”错误

  24. 24

    曾经在旧版gcc中使用的C ++模板在clang ++中导致“阴影模板参数”错误

  25. 25

    在C ++中使用带有默认模板参数的模板类时出现“模板参数过多错误”

  26. 26

    如何在C ++中的另一个模板函数中使用属于模板化类的嵌套类型?

  27. 27

    可以在C ++ 14 constexpr函数中使用for循环实例化模板吗?

  28. 28

    在C ++中使用模板是否需要一些任务初始化?

  29. 29

    在链表程序中使用模板时,在C ++中重载<<运算符

热门标签

归档