【发布时间】:2014-09-25 12:59:29
【问题描述】:
我有一个在 OS X 上使用 Core Audio 结构的 C++ 类。 我最初的实现是这样的:
class MyClass
{
private:
AUNode _converterNode;
AURenderCallbackStruct _renderCBStruct;
public:
MyClass();
~MyClass();
inline AUNode* getConverterNode() { return &_converterNode; }
inline AURenderCallbackStruct* AURenderCallbackStruct() { return &_renderCBStruct; }
};
阅读 Poco 风格指南后,我想更改私有/公共块的顺序。然后它看起来像这样:
class MyClass
{
public:
MyClass();
~MyClass();
inline AUNode* getConverterNode() { return &_converterNode; }
inline AURenderCallbackStruct* AURenderCallbackStruct() { return &_renderCBStruct; }
private:
AUNode _converterNode;
AURenderCallbackStruct _renderCBStruct;
};
编译器现在告诉我AURenderCallbackStruct 类型未知,并告诉我用::AURenderCallbackStruct 替换类型名称。当我这样做时,没有编译器错误。
奇怪的是,这只出现在 `AURenderCallbackStruct 而不是 AUNode。
AURenderCallbackStruct 的定义如下:
typedef struct AURenderCallbackStruct {
AURenderCallback inputProc;
void * inputProcRefCon;
} AURenderCallbackStruct;
而AUNode是这样定义的:
typedef SInt32 AUNode;
谁能解释为什么私有/公共块的顺序更改会产生编译器错误以及为什么在类型前添加::时错误消失?
【问题讨论】:
-
您能解释一下 C-tag 是如何应用的吗?
-
我认为 CoreAudio 类型是本机 C 类型,但我想你是对的。将删除标签。
标签: c++ macos namespaces core-audio