从头文件定义嵌套类



对C++来说仍然相当新,并试图在这里将其提升一个档次。我想构建一个带有嵌套 Node 类的堆类,并向堆类添加堆排序方面。我已经用 Java 做了类似的事情,但我在尝试定义 .cpp 文件中的嵌套类时遇到了困难。

#pragma once
#ifndef HEAP_H
#define HEAP_H
template <class T>
class Heap 
{
public:
    class Node
    {
    public:
        Node(T);
        T data;
    private:
        Node *parent;
        Node *left_child;
        Node *right_child;
        boolean is_root;
    };

    Heap(T*, int);
    sort_it();

private:
    T *unsorted_list
    Node root;
    void build_heap();
    void add_node(Node);
    void swap_root();
    void trickle_down();
    void heap_sort();
};

#endif

现在,当我在.cpp文件中定义嵌套类时,我不能简单地...

#include "stdafx.h"
#include "Heap.h"
#include <iostream>
//Defining Heap Constructor
Heap::Heap(T* incoming_array, int _size)
    {
         unsorted_list = incoming_array;
         size = _size;
    }
//Defining Node Constructor
Heap::Node(T _data)
    {
        data = _data;
        left_child = right_child = parent = Null;
        is_root = false;
    }

不确定我的问题是否在于我如何合并模板,或者我定义内部类的语法是否错误。泛型编程和嵌套类对我来说都不熟悉C++

如果在嵌套类中使用任何泛型类型,则必须指定模板。

template<class T>
class Node

若要在类外部定义模板类构造函数,

template<typename T>
Node<T>::Node(T _data)

按如下方式声明成员,

Node<T> root

最新更新