我有一个看起来像这样的文件:
namespace myName
{
typedef HRESULT (*PFN_HANDLE)(myName::myStruct);
class MyClass{
//...
public:
BOOL RegisterCallback (PFN_HANDLE foo);
//...
};
struct myStruct{
//...
};
}
但是我收到一个编译错误“myStruct”不是“myName”的成员。谁能告诉我发生了什么事?可以在我的头文件中声明一个结构,对吗?是 namespace 问题吗?很抱歉我这么密集。
最佳答案
您试图在声明之前使用类型名称myStruct。可以将整个struct定义放在typedef之前,或者将此声明放在typedef之前:
struct myStruct;
这就是所谓的“转发声明”。它告诉编译器以后会有一个具有该名称的类型,但没有确切说明该类型的定义方式。
关于c++ - 命名空间类和结构,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1013291/