我知道这个问题已被多次询问,但其他线程都没有完全适用,我真的无法找到我的错误。所以我有2个头文件,depositor.h和name.h
#include <iostream>
#include <string>
#include "name.h"
using namespace std;
class name;
class depositor
{
private:
string ssnum;
string fname;
string lname;
name info;
public:
depositor(string f, string l, string s) : info(f, l)
{
ssnum = s;
fname = f;
lname = l;
}
string getssnum();
info.getfname()
info.getlname();
void printffname();
void printllname();
void printssnum();
};
#include <string>
#include <iostream>
using namespace std;
class name
{
private:
string fname;
string lname;
public:
name(string f, string l)
{
fname = f;
lname = l;
}
string getfname();
string getlname();
void printfname();
void printlname();
};
两者都在单独的文件中,我在存放器中声明了类名(info)的对象,但是当我运行代码时,代码块告诉我&#34;&#39; info&#39;没有命名类型。&#34;通过其他线程,人们已经建议这是一个编译错误,并建议使用前向声明;除非我不正确地使用它并没有帮助。对于我的生活,我无法看清代码的错误;我以完全相同的方式声明了其他对象并且它们工作正常,但由于某种原因,这个实例是不合法的。有人可以提出建议吗?
更新:在这个问题上阅读更多信息,似乎经常在两个类在同一个文件中,或者有递归.h使用时发生。我有一个类似于前面的问题,但是我修复了它并且在这个例子中似乎没有可能,因为name.h不包含我自己的任何标题。我仍然想知道这里有什么问题,是否可能出现代码块问题?