我有一个看起来像这样的文件:
namespace myName
{
typedef HRESULT (*PFN_HANDLE)(myName::myStruct);
class MyClass{
//...
public:
BOOL RegisterCallback (PFN_HANDLE foo);
//...
};
struct myStruct{
//...
};
}
但我收到编译错误'myStruct'不是'myName'的成员。谁能告诉我发生了什么事?可以在我的头文件中声明一个结构,对吗?它是命名空间问题吗?我很抱歉这么密集。
答案 0 :(得分:6)
您在声明之前尝试使用类型名称myStruct。将整个struct定义放在typedef之前,或者将此声明放在typedef:
之前struct myStruct;
这被称为“前瞻性声明”。它告诉编译器稍后会有一个具有该名称的类型,但是没有确切地说明该类型是如何定义的。