我真的不知道如何继续清除我想知道的内容,因此标题可能会有些混乱。 我在标题中定义了一个类,例如“ CClass”。 在此类内部,例如:myStruct。 在私有区域中,我具有一个函数的签名,该函数返回myStruct类型的指针,例如:myStruct *(int a){}; 我有一个CPP文件,在其中编写了函数定义。 我在CPP的开头包含了该类,但是在编写函数定义时出现错误:找不到标识符“ myStruct”。 我将插入确切的代码段。
class CProgram{
struct var {
int asc;
int val;
var*next;
};
var *tr;
public:
void init(std::string in);
CProgram(std::string in);
CProgram();
~CProgram();
private:
void sub();
var* search(var*h, int u);
};
接下来,我从cpp中插入一段代码:
#include "CProgram.h"
using namespace std;
var* CProgram::search(var*h, int u) {//here I have the error:identifier "var" is undefined
while ((h->next != NULL) && (h->asc != u))
h = h->next;
if (h->asc == u) return h;
else return NULL;
}
答案 0 :(得分:0)
var
结构嵌套在CProgram
类中,因此在源文件中不可见,您必须将其完全限定为CProgram::var
。
然后您的函数将变为:
CProgram::var* CProgram::search(var*h, int u)
{
while ((h->next != NULL) && (h->asc != u))
h = h->next;
if (h->asc == u) return h;
else return NULL;
}
嵌套类的名称存在于封闭类的范围内。
有关更多详细信息,请参见nested class上的参考。