У меня возникла проблема с объявлением структуры. Любая помощь будет оценена по достоинству. Код ниже.struct не называет тип
//in 8puzz.h
#include string
using namespace std;
struct state{
state();
int cval;
string board;
state* parent;
state* previous;
state* next;
};
state starter;
state* open;
state* closed;
string start;
//in 8puzz.cpp
#include "8puzz.h"
using namespace std;
state::state(){
board="";
cval=0;
parent=NULL;
previous=NULL;
next=NULL;
};
//in main.cpp
#include "8puzz.cpp"
using namespace std;
starter.cval=Heuristic(start);
open= &starter;
closed= &starter;
//end code
Эвристический() - это функция, которая берет строку и возвращает int. Поставит, если потребуется, но я считаю, что это не имеет значения; заменяя его на int, не меняет результат.
Ошибка, которую я получаю, - «стартер не называет тип». То же самое для «открытого» и «закрытого». Я видел другие вопросы об этой ошибке, но все они предназначены для структуры внутри класса, и кажется, что решение всегда связано с квалификацией имен классов и структур. Я не думаю, что это может быть проблемой здесь, поскольку структура объявляется независимо. Я пробовал много перестановок; объявляя все внутри 8puzz.cpp, с конструктором, без конструктора, конструктором в начале объявления структуры, конструктором в конце, конструктором, определенным с определением, конструктором, определенным отдельно. Я включил эту версию, потому что, основываясь на всем, что я читал, я считаю, что она соответствует лучшим практикам, но каждая версия дала мне ту же ошибку. Любая помощь будет большой. Заранее спасибо!
извините, да, все ниже «using namespace std;» в main.cpp находится внутри основной функции. – IAntoniazzi
Попробуйте прокомментировать ** state() ** structs не может содержать функции или методы. –
Хорошо, просто попробовал это. Без изменений. – IAntoniazzi