class Iterator;
class SortedList {
friend class Iterator;
private:
Node* root;
Node* minim(Node* node) const {
while (node->getLeft() != nullptr)
node = node->getLeft();
return node;
};
public:
SortedList() {
root = nullptr;
};
Iterator iterator() {
Node* min = minim(root);
return Iterator(*this, min); // Here says that Iterator has no constructors
};
};
class Iterator {
private:
const SortedList& list;
Node* current;
public:
Iterator(const SortedList& list, Node* current) : list{ list }, current{ current } {};
};
Iteratorクラスにはコンストラクタがありません。また、Iteratorクラスにはコンストラクタがありません。間違っているとは、それらのパラメータには何もないことを指定します。クラスにはコンストラクタはありませんが、正しいパラメータを持ちます
もう1つのことは、イテレータメソッドをコメントして、イテレータを書くことによってメインのイテレータをインスタンス化すると、それは{my parameters}うまくいきます。
Iterator iterator() {
Node* min = minim(root);
return Iterator(*this, min); // Here says that Iterator has no constructors
};
移動Iterator
の定義の後に関数の定義:
あなたの関数の最後の '}'の後に ';'を置かないでください! – abelenky
'Iterator'を定義する前に、それは不完全な型であり、不完全な型ではあまりできません。 – AndyG
Iteratorを前方宣言された 'SortedList'に依存させ、' SortedList'を完全な 'Iterator'に依存させたいと思うように聞こえます。 – AndyG