首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >定义头文件中的嵌套类

定义头文件中的嵌套类
EN

Stack Overflow用户
提问于 2017-05-21 15:06:46
回答 1查看 1K关注 0票数 0

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

代码语言:javascript
复制
#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文件中定义我的嵌套类时,我不能简单地...

代码语言:javascript
复制
#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++中,泛型编程和嵌套类我都不熟悉

EN

回答 1

Stack Overflow用户

发布于 2017-05-21 15:15:54

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

代码语言:javascript
复制
template<class T>
class Node

为了在类外部定义模板类构造函数,

代码语言:javascript
复制
template<typename T>
Node<T>::Node(T _data)

如下所示声明该成员,

代码语言:javascript
复制
Node<T> root
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44094095

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档