我遇到了结构声明的问题。任何帮助,将不胜感激。代码如下。
//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
Heuristic()是一个接受字符串并返回int的函数。如果需要会发布,但我认为这是无关紧要的;用int替换它不会改变结果。
我得到的错误是“启动器没有命名类型”。 “开放”和“关闭”相同。我已经看到了有关此错误的其他问题,但所有这些都是针对类中的结构而言似乎解决方案总是与限定类和结构名称有关。我不认为这可能是问题,因为结构是独立声明的。我尝试了许多排列;使用构造函数声明8puzz.cpp中的所有内容,没有构造函数,构造函数在结构声明的开头,结构中的构造函数,使用定义定义的构造函数,构造函数单独定义。我已经包含了这个版本,因为根据我读过的所有内容,我认为它遵循最佳实践,但每个版本都给了我同样的错误。任何帮助都会很棒。先感谢您!
答案 0 :(得分:1)
您忘了将main.cpp
代码放在功能中。该函数应该被称为int main()
。
没有函数上下文,您的计算机不知道何时执行您在随机空间中编写的那些语句!
此外,您的文件main.cpp
包含8puzz.cpp
。应该包括8puzz.h
。