gpt4 book ai didi

c++ - 命名空间类和结构

转载 作者:行者123 更新时间:2023-11-30 01:01:15 34 4
gpt4 key购买 nike

我有一个看起来像这样的文件:

namespace myName
{
typedef HRESULT (*PFN_HANDLE)(myName::myStruct);

class MyClass{
//...
public:
BOOL RegisterCallback (PFN_HANDLE foo);
//...
};

struct myStruct{
//...
};
}

但我收到编译错误“myStruct”不是“myName”的成员。谁能告诉我这是怎么回事?在我的头文件中声明一个结构是可以的,对吧?是命名空间问题吗?不好意思说得这么密。

最佳答案

您在声明之前尝试使用类型名称 myStruct。要么将整个结构定义放在 typedef 之前,要么将此声明放在 typedef 之前:

struct myStruct;

这被称为“前向声明”。它告诉编译器稍后将有一个具有该名称的类型,但没有确切说明该类型是如何定义的。

关于c++ - 命名空间类和结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1013291/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com