免責事項:この状況によくある他の質問を調べましたが、解決策が見つかりませんでした
状況:タイプ Levelnode (構造体) のリンク リストを作成しようとしています。新しいノードを作成すると、新しいレベル (レベル クラス) が作成されます。
問題: 18 行目 (ヘッダー ファイルではなく .cpp ファイル) でエラーを受け取ります -
Error 2 error C2512: 'Levelnode' : no appropriate default constructor available c:\users\timi\desktop\ludum dare\ld27\nodes.cpp 18 1 LD27
ヘッダー ファイルにデフォルトのコンストラクターがあるため、このエラーが発生する理由がわかりません。
Nodes.h ヘッダー ファイルは次のとおりです。
#ifndef NODES_H
#define NODES_H
#include <iostream>
#include <string>
#include "structs.h"
#include "Level.h"
using namespace std;
class Nodes
{
private:
Levelnode * p;
Level * level;
public:
Nodes()
{
}
~Nodes();
Levelnode * CreateNode(Level * newLevel, SDL_Surface *screen1, string levelName, SDL_Rect camera1);
void InsertAfter(Levelnode * p, Levelnode * newNode);
Levelnode * InsertFirst(Levelnode * p, Levelnode * newNode);
void DeleteNode(Levelnode * p);
void PrintList(Levelnode * p);
};
#endif
.cpp ファイルは次のとおりです。
#include <Windows.h>
#include <iostream>
#include <string>
#include "Nodes.h"
#include "structs.h"
#include "Level.h"
Nodes::~Nodes()
{
}
Levelnode * Nodes::CreateNode(Level * newLevel, SDL_Surface *screen1, string levelName, SDL_Rect camera1)
{
Levelnode * newNode;
newNode = new Levelnode;
level = new Level(screen1, levelName, camera1);
level->draw();
newNode->L = *newLevel;
newNode->next = NULL;
return newNode;
}
void Nodes::InsertAfter(Levelnode * p, Levelnode * newNode)
{
newNode->next = p->next;
p->next = newNode;
}
Levelnode * Nodes::InsertFirst(Levelnode * p, Levelnode * newNode)
{
newNode->next = p;
return newNode;
}
void Nodes::DeleteNode(Levelnode * p)
{
Levelnode * pTemp;
while ( p != NULL)
{
pTemp = p;
p = p->next;
delete pTemp;
}
}
void Nodes::PrintList(Levelnode * p)
{
while (p != NULL)
{
p->L.draw();
p = p->next;
}
}
構造体ヘッダー ファイル:
#ifndef STRUCTS_H
#define STRUCTS_H
#include <Windows.h>
#include <string>
#include "Level.h"
using namespace std;
struct position
{
int x;
int y;
};
struct Levelnode
{
Level L;
Levelnode * next;
};
#endif