[解決済み】認識できないテンプレート宣言/定義
2022-02-18 15:07:06
質問
ヒープを実装しようとしているのですが、ある関数で上記のエラーが発生しました。
以下は私のヘッダーファイルです。
template <typename E>
class Heap
{
private:
class Node {
E data;
Node * left;
Node * right;
};
Node root;
int length;
E * preorder(E * list, int length, Node node);
E * inorder(E * list, int length, Node node);
E * postorder(E * list, int length, Node node);
void clear(Node node); //Recursively clears all nodes and frees all pointers
public:
Heap();
Heap(E * list, int length);
~Heap();
Node * getRoot();
void buildHeap(E * list, int length);
E * returnList();
};
そして、問題の特定の関数(他の関数でも同様のエラーがありますが)。このエラーは2行目にあります。
template <typename E>
Node<E> * Heap<E>::getRoot() {
return &root;
}
解決するには?
コンパイラが文句を言う
Node<E>
という名前のテンプレートはありません。
Node
をグローバルスコープで表示します。コードは、それがメンバーテンプレートであることを言わなければならない。
template <typename E>
typename Heap<E>::Node * Heap<E>::getRoot() {
return &root;
}
関連
-
[解決済み】C++ クラスヘッダが含まれているときに「不明な型」があるのはなぜですか?重複
-
[解決済み] エラーが発生する。ISO C++は型を持たない宣言を禁じています。
-
[解決済み】変数 '' を抽象型 '' と宣言できない。
-
[解決済み] クラスにデフォルトコンストラクタが存在しない。
-
[解決済み】C++プログラムでのコンソールの一時停止
-
[解決済み】標準ライブラリにstd::endlに相当するタブはあるか?
-
[解決済み] to_string は std のメンバーではない、と g++ が言っている (mingw)
-
[解決済み】変数やフィールドがvoid宣言されている
-
[解決済み] template "と "typename "キーワードはどこに、なぜ入れなければならないのですか?
-
[解決済み] C++テンプレート関数定義の.CPPファイルへの格納
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] テスト
-
[解決済み】C++エラー。アーキテクチャ x86_64 に対して未定義のシンボル
-
[解決済み】getline()が何らかの入力の後に使用されると動作しない 【重複あり
-
[解決済み】IntelliSense:オブジェクトに、メンバー関数と互換性のない型修飾子がある
-
[解決済み】cc1plus:エラー:g++で認識されないコマンドラインオプション"-std=c++11"
-
[解決済み】Visual Studio 2013および2015でC++コンパイラーエラーC2280「削除された関数を参照しようとした」が発生する
-
[解決済み] 非静的データメンバの無効な使用
-
[解決済み】指定範囲内の乱数で配列を埋める(C++)
-
[解決済み】C++ - 適切なデフォルトコンストラクタがない [重複]。
-
[解決済み】演算子のオーバーロード C++; <<操作のパラメータが多すぎる