それで、Linked List から移動して、Linked Stack を構築する必要があります。ただし、プライベートメンバーにアクセスできないというアクセスエラーが発生します。ポインターをコピーできない一意のポインター内のコンストラクターに関係していることはわかっています。男の 1 人は、コンストラクターのディープ コピーを行うように私に言いましたが、方法がわかりません。誰かが私にそれを行う方法を教えてくれませんか? ありがとうございました。
PS: これは私が今日投稿したものです。しかし、私はまだ自分自身に答えを持っていません.誰も私に答えてくれないようです. これが再投稿だと思われる場合は、お気軽に削除してください。
LinkNode.h
#include <iostream>
#include <memory>
using namespace std;
template <class T>
class LinkedNode
{
public:
// This is giving me error and I do not know how to recreate
// or deep-copy the constructor
LinkedNode(T newElement, unique_ptr<LinkedNode<T>> newNext)
{
element = newElement;
next = newNext
}
T GetElement() {return element;}
void SetElement(T x) {element = x;}
unique_ptr<LinkedNode<T>> newNext() {return next;}
void SetNext(unique_ptr<LinkedNode<T>> newNext) {next = newNext;}
private:
T element;
unique_ptr<LinkedNode<T>> next;
};
CompactStack.h
#pragma once
#include"LinkedNode.h"
using namespace std;
template <class T>
class CompactStack
{
public:
CompactStack() {}
bool IsEmpty() const { return head == 0; }
T Peek()
{
assert(!IsEmpty());
return head-> GetElement();
}
void Push(T x)
{
unique_ptr<LinkedNode<T>> newhead(new LinkedNode<T>(x, head));
head.swap(newhead);
}
void Pop()
{
assert(!IsEmpty());
unique_ptr<LinkedNode<T>> oldhead = head;
head = head->next();
}
void Clear()
{
while (!IsEmpty())
Pop();
}
private:
unique_ptr<LinkedNode<T>> head;
};
これは、コンパイラから得たエラーです
Error 1 error C2248: 'std::unique_ptr<_Ty>::unique_ptr' : cannot access private member declared in class 'std::unique_ptr<_Ty>' e:\fall 2013\cpsc 131\hw4\hw4\hw4\compactstack.h 23