在返回模板化的结构对象指针时遇到麻烦

戴维·韦拉斯克斯

我正在类中编写所有方法原型,它们的定义将不在其范围内。这是我的AVL类设置:

template <class type>
class avlTree : public binarySearchTree<type>
{
public:
    avlTree();      //default constructor
    ~avlTree();     //destructor
    const type & findMin() const;
    const type & findMax() const;
    bool isEmpty() const;
    void printTree() const;
    void makeEmpty();
    void insert(const type & newData);
    void remove(const type & deleteItem);

private:
    template<class type>
    struct avlNode
    {
        type info;
        avlNode *left;
        avlNode *right;
        int height;

        avlNode(const type & data, avlNode *ll, avlNode *rl, int h = 0)
            : info{ data }, left{ ll }, right{ rl }, height{ h } {}
    };

    avlNode<type> * root;

    void insert(const type & newData, avlNode<type> * & p);
    void remove(const type & deleteItem, avlNode<type> * & p);
    avlNode<type>* findMin(avlNode<type> * p);  //these two methods are where I'm having problems.
    avlNode<type>* findMax(avlNode<type> * p);

};

我在编写内部(私有)findMin()findMax()定义时遇到了麻烦为了增加清晰度,不是实际算法,而是返回avlNode对象指针的语法。该类中的原型没有显示任何错误,但是当我尝试在该类之外编写其定义时,Intellisense将不会显示,并且当我尝试编码时,本地p指针也不会显示其成员p->member通常,Intellisense会显示下拉菜单及其成员,但不会显示。因此,我知道存在某种语法错误。我认为这可能与模板的设置方式有关,但我不确定。那我在做什么错?

我遇到的方法定义有问题:

template <class type>
typename avlTree<type>::avlNode* avlTree<type>::findMin(avlNode * p)
{
    if (p == nullptr)
        return nullptr;
    if (p->left == nullptr)  //when I hover over 'p->left' that's when Intellisense says '<unknown> avlTree<type>::avlNode::left'
        return p;
    return findMin(p->left);  //same thing here
}
伊戈尔·特兰德尼克(Igor Trandetnik)

这应该做到这一点:

template <typename type>
avlTree<type>::avlNode<type>* 
    avlTree<type>::findMin(avlNode<type>* p) {
  // ...
}

如果您还没有意识到这一点,则无需将avlNode其自身作为模板。您正在启用不必要的灵活性,这avlTree<int>::avlNode<long>是一回事,但实际上从未利用过这种灵活性。创建avlNode一个普通的非模板成员类-这将大大简化事情。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

处理从NSUserDefaults返回的对象时遇到麻烦

来自分类Dev

使用指针时遇到麻烦

来自分类Dev

从模板化函数返回结构指针

来自分类Dev

C ++在实现模板化嵌套类时遇到麻烦

来自分类Dev

实例化对象并更改其层时遇到麻烦

来自分类Dev

C ++在存储指针元组时遇到麻烦

来自分类Dev

将指针存储在指针数组中时遇到麻烦

来自分类Dev

使用多个对象时遇到麻烦

来自分类Dev

在Angular中遍历对象时遇到麻烦

来自分类Dev

离子-访问对象时遇到麻烦

来自分类Dev

在展平对象数组时遇到麻烦

来自分类Dev

指针遇到麻烦

来自分类Dev

在构造函数内部初始化对象的ArrayList时遇到麻烦

来自分类Dev

在解释这个处理指针的C示例时遇到麻烦

来自分类Dev

将多个初始化程序列表传递给可变参数函数模板时遇到麻烦

来自分类Dev

Element是结构时返回模板

来自分类Dev

我该如何编写在模板类中声明的函数定义,以返回指向结构对象的指针?

来自分类Dev

分页时遇到麻烦

来自分类Dev

在Javascript xmlhttp对象中打开相对URL时遇到麻烦

来自分类Dev

使用pygame在python屏幕上移动对象时遇到麻烦

来自分类Dev

确保字典中存在对象时遇到麻烦

来自分类Dev

将String转换为Joda DateTime对象时遇到麻烦

来自分类Dev

在Android中移动可绘制对象时遇到麻烦

来自分类Dev

在Express JS中访问子对象属性时遇到麻烦

来自分类Dev

PHP在创建对象和访问其属性时遇到麻烦

来自分类Dev

使用Swift初始化属性时遇到麻烦

来自分类Dev

初始化枚举类型时遇到麻烦

来自分类Dev

返回结构数组的麻烦

来自分类Dev

我在使用某些指针时遇到麻烦,调试结束时访问位置失败

Related 相关文章

热门标签

归档