リンクリストを使ってスタッククラスを実装したい。ヘッダー ファイルで定義する方法は次のとおりです。スタック内の各要素について、要素には 2 つのデータがあります。
#ifndef MYSTACK_H_INCLUDED
#define MYSTACK_H_INCLUDED
#include <iostream>
using namespace std;
template<typename T>
class MyStack{
public:
MyStack();
~MyStack();
...
...
private:
struct node;
node* head;
int _top;
};
template<typename T>
struct MyStack<T>::node {
node(node*, T, T);
T position_x;
T position_y;
node* next;
};
しかし、プライベート フィールドの構造体ノードを次のようなクラスに変更するとどうなるでしょうか。
#ifndef MYSTACK_H_INCLUDED
#define MYSTACK_H_INCLUDED
#include <cstddef> // for std:size_t
using namespace std;
template <class T>
class MyStack{
public:
MyStack();
~MyStack();
...
...
private:
class Node {
friend class MyStack<T>;
public:
Node(T, Node*);
private:
const T value;
Node *next;
};
Node *head;
};
#endif // MYSTACK_H_INCLUDED
Node の Stack クラスに別の Class を作成する必要がありますか、それとも Struct を使用するだけですか? なぜ ?