gpt4 book ai didi

c++ - 内部类和访问外部成员

转载 作者:搜寻专家 更新时间:2023-10-31 00:22:51 24 4
gpt4 key购买 nike

我对同一个标题有疑问 here但是现在,正如我将在下面的代码中展示的那样,这似乎与我在第一个同标题问题中向我解释的方式相反。好的代码:

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. */
}

代码中的问题。谢谢。

最佳答案

在即将推出的 C++0x 标准中,嵌套类对封闭类成员的访问权限正在发生变化。在当前标准中,11.8 说:

The members of a nested class have no special access to members of an enclosing class

在 C++0x 的草案中,这变成了

A nested class is a member and as such has the same access rights as any other member

一些编译器正在采用新的访问规则;从你的问题来看,我猜 VS2010 可以,而且我从经验中知道 GCC 已经做了一段时间。

关于c++ - 内部类和访问外部成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2881305/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com