我在这里有同样的标题,但现在我将在下面的代码中出现,这似乎与我在第一个问题中向我解释的方式相反.好的代码:
class LINT_rep
{
private:
char* my_data_; //stores separately every single digit from a number
public:
class Iterator:public iterator<bidirectional_operator_tag,char>
{
private:
char* myData_
public:
Iterator(const LINT_rep&);
};
};
#include "StdAfx.h"
#include "LINT_rep.h"
LINT_rep::Iterator::Iterator(const LINT_rep& owner):myData_(nullptr)
{
myData_ = owner.my_data_; /*
HERE I'M ACCESSING my_data WHICH IS PRIVATE AND THIS
CODE COMPILES ON VS2010 ULTIMATE BUT IT SHOULDN'T
BECAUSE my_data IS PRIVATE AND OTHER CLASS SHOULDN'T
HAVE ACCESS TO IT'S PRIVATE MEMB. AS EXPLAINED TO ME IN
QUESTION TO WHICH I;VE PROVIDED LINK. */
}
Run Code Online (Sandbox Code Playgroud)
代码中的问题.谢谢.
在即将推出的C++ 0x标准中,嵌套类对封闭类成员的访问权限正在发生变化.在现行标准中,11.8表示:
嵌套类的成员对封闭类的成员没有特殊访问权限
在C++ 0x的草案中,这变为
嵌套类是成员,因此具有与任何其他成员相同的访问权限
一些编译器正在采用新的访问规则; 从你的问题来看,我想VS2010确实如此,而且从经验中我知道海湾合作委员会已经做了一段时间了.
| 归档时间: |
|
| 查看次数: |
132 次 |
| 最近记录: |