C++ C++;:类成员的转发声明(变量)

C++ C++;:类成员的转发声明(变量),c++,C++,是否可以向前声明类成员变量?我想做如下事情(但不起作用): 在本例中,myvar是myClass的布尔成员。不,您不能。想象一下,这个类以这种方式分散在不同的翻译单元中。 届时会有哪些议员?对象的布局是什么 这很难解决。我建议在这种情况下使用set/get方法。这样就不会将内部数据暴露给外部世界 在myClass的标题中: class myClass { public: setMyVar(const bool& value); public: inline const b

是否可以向前声明类成员变量?我想做如下事情(但不起作用):


在本例中,myvar是myClass的布尔成员。

不,您不能。想象一下,这个类以这种方式分散在不同的翻译单元中。
届时会有哪些议员?对象的布局是什么


这很难解决。

我建议在这种情况下使用set/get方法。这样就不会将内部数据暴露给外部世界

在myClass的标题中:

class myClass
{
    public: setMyVar(const bool& value);
    public: inline const bool& getMyVar() const;

    private: bool myVar;
};
在您的实施中:

class myClass;

void main()
{
    myClass* aaa;
    ...
    aaa->setMyVar(false);
}

为了理解为什么你不能,仅使用
*aaa
成员存在的信息,尝试找出在何处存储该成员的新值。从设计角度来看,这也不好,因为修改内部数据会破坏封装。问题似乎在于使用类的数据,而不需要包含类,但在您的例子中,如果不包含类的完整定义(而不仅仅是要求的向前声明),则仍然无法访问
setMyVar
。啊,很可能我误解了这一点。每个翻译单元中的编译器都必须知道所有数据类型和声明,并且转发声明不能替代这一点。因此,在您的特定情况下,必须包含标题。
class myClass;

void main()
{
    myClass* aaa;
    ...
    aaa->setMyVar(false);
}