我已经看到了类似的答案,但我似乎无法通过查看这些来解决我的问题(例如this或that)。
所以,我有这个。
A.H
for (index, element) in list.enumerate() {
print("Item \(index): \(element)")
}
在包含 B.h 中,我有:
#ifndef INCLUDE_CLASS_NAME
#define INCLUDE_CLASS_NAME
#include <B.h>
using namespace C;
D::DPtr myvariable; <-- Error in here
#endif
为什么我在上述行中收到此错误:
namespace C{
namespace E{
class D
{
public:
typedef shared_ptr<D> DPtr;
}
} //end of namespace E
} // end of namespace C
我包含.h文件,它定义了类。我错过了什么?
答案 0 :(得分:5)
符号D
位于名称空间E
内,位于名称空间C
内,因此完全限定名称为C::E::D
。
所以:
添加E::
以正确引用D
:
mutable E::D::DPtr myvariable;
同样在E
指令中声明using
:
using namespace C::E;
答案 1 :(得分:4)
您错过了名称空间E ...
mutable E::D::DPtr myvariable; // should work
答案 2 :(得分:0)
您根据预处理程序尝试调用尚不存在的函数。您需要在调用函数之前定义函数:
int mainFunction(){
int foo(int bar){ //define function FIRST...
return bar;
}
foo(42) //call it later.
}
这应该摆脱错误。 这不是:
int mainFunction(){
foo(42) //trying to call a function before it's declared does not work.
int foo(int bar){
return bar;
}
}