我有以下代码:
// header.h
class Outer
{
class Mid
{
Mid();
~Mid ();
};
class Inner
{
private:
static Mid m_mid;
};
};
当我在cpp文件中定义静态私有对象时,它给出了一个错误,说Mid没有命名类型:
// header.cpp:
# include "header.h"
Mid Mid::m_mid;
{Begin definitions for Outer, Mid and Inner from here}
为什么编译器会抱怨这个? :Mid没有命名类型
答案 0 :(得分:3)
没有课程Mid
;还没有名为Mid
的{{1}}成员。
但是,有一个班级m_mid
和一个班级Outer::Mid
,其成员名为Outer::Inner
。写下那些。 :)
m_mid
答案 1 :(得分:1)
您必须完全限定类型名称和成员名称。
Outer::Mid Outer::Inner::m_mid;
答案 2 :(得分:0)
这些错误与静态私有对象无关,由于以下原因而出现。
修复后,以下工作
class Outer
{
public:
class Mid
{
public:
Mid(){}
~Mid (){}
};
class Inner
{
private:
static Mid m_mid;
};
};
int main(){
Outer::Mid m_mid;
return 0;
}