0

C++ ではまだかなり新しく、ここでノッチを上げようとしています。ネストされたノード クラスを使用してヒープ クラスを構築し、ヒープ ソート アスペクトをヒープ クラスに追加したいと考えています。私は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++ では、ジェネリック プログラミングとネストされたクラスの両方になじみがありません。

4

1 に答える 1