不在C++中命名类型

JT.*_*JT. 7 c++ types header

在C++中我得到一个错误,说xxxxx没有在yyy.h中命名一个类型

那是什么意思?

yyy.h包含了标题xxxx.

例如,我使用:

typedef CP_M_ReferenceCounted FxRC;
Run Code Online (Sandbox Code Playgroud)

我已经加入CP_M_ReferenceCounted.hyyy.h

我缺少一些基本的理解,它是什么?

Tes*_*est 5

看来您需要相应地引用名称空间。例如,以下yyy.h和test.cpp与您的问题相同:

//yyy.h
#ifndef YYY_H__
#define YYY_H__

namespace Yyy {

class CP_M_ReferenceCounted
{
};

}

#endif

//test.cpp
#include "yyy.h"

typedef CP_M_ReferenceCounted FxRC;


int main(int argc, char **argv)
{

        return 0;
}
Run Code Online (Sandbox Code Playgroud)

错误将是

...error: CP_M_ReferenceCounted does not name a type
Run Code Online (Sandbox Code Playgroud)

但是添加一行“使用名称空间Yyy;”。解决了以下问题:

//test.cpp
#include "yyy.h"
// add this line
using namespace Yyy;

typedef CP_M_ReferenceCounted FxRC;
...
Run Code Online (Sandbox Code Playgroud)

因此,请检查.h标头中的名称空间范围。


Joh*_*don 3

CP_M_ReferenceCounted 类型的包含可能在词法上位于 typedef 之后...您可以直接链接到这两个文件,或者在一个简单的示例中重现该问题吗?