有没有办法从它的类之外声明一个受C++保护的变量?

Nat*_*ngo 0 c++ variables class protected

class A {
public:
    A();
    int get();
    void set();
};

protected int A::var;
Run Code Online (Sandbox Code Playgroud)

好像它会起作用.但是,它"期望受保护之前的不合格身份".这样做的正确方法是什么?

Alo*_*ave 6

简单来说,不,这是不可能的.

在复杂的单词中,这是不可能的,因为标准允许关键字和访问说明符protected仅在类定义中使用.


Dav*_*rtz 6

编译器如何知道为类的实例分配多少空间?考虑

A foo;
protected int A::var;
A bar;
Run Code Online (Sandbox Code Playgroud)

编译器如何知道在分配var时分配空间foo?第一行和第二行甚至可以在不同的翻译单元中.

所以,不,这是不可能的,因为它没有意义.