对于C++来说仍然是相当新的,并试图在这里提升它的档次。我想构建一个带有嵌套Node类的Heap类,并将堆排序方面添加到heap类中。我已经用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++中,泛型编程和嵌套类我都不熟悉
发布于 2017-05-21 15:15:54
如果在嵌套类中使用任何泛型类型,则必须指定模板。
template<class T>
class Node为了在类外部定义模板类构造函数,
template<typename T>
Node<T>::Node(T _data)如下所示声明该成员,
Node<T> roothttps://stackoverflow.com/questions/44094095
复制相似问题