在另一个结构中声明struct并在声明为private时访问问题

时间:2016-09-21 10:49:48

标签: c++ data-structures

我正在尝试在另一个结构中实现私有结构或类。案例I工作,而案例II在将所有成员变量声明为公共之后是可能的。为什么这样?我知道默认情况下,struct中的所有成员变量/函数都是公共的,反之亦然。现在我有点困惑为什么案例II不起作用?任何想法?

// case I   
struct impl::playlist
{
     struct 
     {
        char name_[30];
     }pod_t;

};

// case II   
struct impl::playlist
{
     class pod_t
     {
        private:
        char name_[30]; // not accessible by impl member func if private 
     };

};

1 个答案:

答案 0 :(得分:0)

  

案例I工作,而案例II在将所有成员变量声明为公共之后是可能的。为什么这样? (如果私有,则无法通过impl成员函数访问)

只有公开成员才能在课堂外访问。由于impl的成员函数位于班级pod_t之外,因此只有pod_t的公开成员可用。

P.S。除了成员的访问说明符之外,您的案例I和II是不同的。如果我有一个名为pod_t的对象,其类型是一个未命名的类。在案例II中,您有一个名为pod_t的类,并且没有该类的对象。