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