Определение вложенного класса из заголовочного файла

Все еще довольно новый с C ++ и пытаюсь поднять это на ступеньку выше. Я хотел бы создать класс Heap с вложенным классом Node и добавить аспект сортировки кучи в класс 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 ++

0

Решение

Если вы используете какой-либо универсальный тип во вложенном классе, вы должны указать шаблон.

template<class T>
class Node

Чтобы определить конструктор класса шаблона вне класса,

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

Объявите участника следующим образом:

Node<T> root
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]