认为私有部分中的那些定义(类,类型等的成员)是类本身的数据和类型。 但也有一些我不理解的例外情况。 例如,为什么在下面的示例中,C ++语言规则无法使用关键字auto?
来描述类型class MyClassA
{
class MyClassB
{
public:
MyClassB::MyClassB() {};
MyClassB::~MyClassB() {};
void get() const {};
};
MyClassB m_B;
public:
MyClassA() {};
~MyClassA() {};
const MyClassB& get()
{
return m_B;
}
};
int _tmain(int argc, _TCHAR* argv[])
{
MyClassA classA;
const MyClassA::MyClassB& ref1 = classA.get(); //! error C2248: 'MyClassA::MyClassB': cannot access private class declared in class 'MyClassA'
const auto ref2 = classA.get(); //! OK, but why is it good here?
ref1.get();
return 1;
}
С++标准对此有何看法?
我正在使用MSVS2015(工具集v140)
开发代码