c++ - 访问嵌套私有类的数据
问题描述
我有一个 Tree 类,它有一个 Node 嵌套类作为私有。
在我的 Tree 类中,我有一个公共方法将 Tree 设置为节点的子节点。问题是当我想访问_children
Node 类的成员时出现错误,即使我使用的是 getter。
有问题的方法是ins(unsigned short i, Tree* childTree)
。
这是我的代码。
树.hpp
#ifndef TREE_HPP
#define TREE_HPP
#include <iostream>
#include <cstddef>
// #include "node.hpp"
template <typename T, unsigned short N>
class Tree {
private:
class Node {
private:
T _data;
Tree* _children[N];
public:
Node();
Node(T);
Tree** getChildren() {return this->_children;}
T getData(){return this->_data;}
~Node() = default;
};
Node* _info;
public:
Tree();
Tree(T, unsigned short);
Tree(const Tree&) = delete; // copy constructor
Tree& operator= (const Tree&) = delete; // assignement by copy constructor
Tree (Tree&&); // transfer constructor
Tree& operator= (Tree&&); // assignement by transfer constructor
~Tree() {delete _info;}
// ~Tree() = default;
bool ins(unsigned short i, Tree childTree) {
if (_info){
// _info->getChildren()[i] = std::move(childTree);
_info->getChildren()[i] = &childTree;
return true;
}
return false;
}
};
template <typename T, unsigned short N> // Node class default constructor
Tree<T,N>::Node::Node(){
_data = 0;
_children = nullptr;
}
template <typename T, unsigned short N> // Node class constructor
Tree<T,N>::Node::Node(T data){
_data = data;
for (unsigned short i = 0; i < N; i++)
_children[i] = NULL;
}
template <typename T, unsigned short N>
Tree<T, N>::Tree()
: _info(nullptr) {}
template <typename T, unsigned short N>
Tree<T, N>::Tree(T data, unsigned short size) {
Node* node = new Node(data);
_info = node;
}
template <typename T, unsigned short N>
Tree<T, N>::Tree(Tree&& t) {
_info = t._info;
t._info = nullptr;
}
template <typename T, unsigned short N>
Tree<T, N>& Tree<T, N>::operator= (Tree&& t) {
if (&t != this) {delete _info; _info = t._info; t._info = nullptr;}
return *this;
}
#endif
主文件
#include <iostream>
#include <cstddef>
#include <exception>
#include "tree.hpp"
#define SIZE 5
int main() {
Tree<char,SIZE> n1('A',SIZE);
n1.ins(0,Tree<char,SIZE>('B',SIZE));
n1.ins(1,Tree<char,SIZE>('C',SIZE));
return 0;
}
另外我应该说_children
必须是树的类型而不是节点。
谢谢先进
解决方案
推荐阅读
- python - Python - 输入语句上的彩色文本
- angular - Angular Unit Test - 如何模拟系统时钟时区
- ruby-on-rails - Ruby On Rails = 将 ActiveRecord 与包含数千条记录的数组进行比较
- sql - SQLite - 查找连续天数
- php - 在进行 HTTP 调用时,Flutter Web 出现“XMLHttpRequest”错误
- c - 在数组中查找两个元素,该元素恰好出现一次
- java - 无法对我的实体关系 JPA 进行更新
- java - 如何使用 apache poi 从拆分文档中提取表?
- pip - pypy3.6-v7.3.1 安装grpcio
- wordpress - 错误:解析 wordpress-deployment.yaml 时出错:将 YAML 转换为 JSON 时出错:yaml:第 33 行:找不到预期的“:”