无法访问父类私有成员(VC6) [英] can't access parent classes private member (VC6)

查看:68
本文介绍了无法访问父类私有成员(VC6)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

此代码适用于VC7.1。但是VC6拒绝编译。


class foo

{

class bar

{

朋友类foo;

foo& m_f;

public:

bar(foo& f):m_f(f){}

void wii()

{

m_f.poo(); // #error C2248

}

} m_bar;


void poo(){}

public:

foo():m_bar(* this){}

};


错误C2248 :''poo'':无法访问在课堂上宣布的私人会员

''foo''

我能做什么?


-

-Gernot

int main(int argc,char ** argv){printf

("%silto%c %cf%cgl%ssic%ccom%c"," ma",58,''g'',64," ba",46,10);}


________________________________________

寻找好游戏?亲自动手吧!

GLBasic - 你可以这样做
www.GLBasic .com

This code works on VC7.1. But VC6 refuses to compile.

class foo
{
class bar
{
friend class foo;
foo & m_f;
public:
bar(foo & f) : m_f(f) {}
void wii()
{
m_f.poo(); // #error C2248
}
} m_bar;

void poo() {}

public:
foo() : m_bar(*this) {}
};

error C2248: ''poo'' : cannot access private member declared in class
''foo''
What can I doo?

--
-Gernot
int main(int argc, char** argv) {printf
("%silto%c%cf%cgl%ssic%ccom%c", "ma", 58, ''g'', 64, "ba", 46, 10);}

________________________________________
Looking for a good game? Do it yourself!
GLBasic - you can do
www.GLBasic.com

推荐答案



Gernot Frisch写道:

Gernot Frisch wrote:
此代码有效在VC7.1上。但VC6拒绝编译。

class foo
{
班级酒吧
{朋友班foo;
foo& m_f;
public:
bar(foo& f):m_f(f){}
void wii()
{
m_f.poo(); // #error C2248
}
} m_bar;

void poo(){}

公开:
foo():m_bar (* this){}
};

错误C2248:''poo'':无法访问类中声明的私有成员
''foo''
什么我可以吗?
This code works on VC7.1. But VC6 refuses to compile.

class foo
{
class bar
{
friend class foo;
foo & m_f;
public:
bar(foo & f) : m_f(f) {}
void wii()
{
m_f.poo(); // #error C2248
}
} m_bar;

void poo() {}

public:
foo() : m_bar(*this) {}
};

error C2248: ''poo'' : cannot access private member declared in class
''foo''
What can I doo?




你允许foo访问bar,但是让bar访问foo。


/ Peter

[snip]



You allow foo access to bar, but let bar access foo.

/Peter
[snip]


Gernot Frisch写道:
Gernot Frisch wrote:
此代码适用于VC7.1。但VC6拒绝编译。

class foo
{
班级酒吧
{朋友班foo;
foo& m_f;
public:
bar(foo& f):m_f(f){}
void wii()
{
m_f.poo(); // #error C2248
}
} m_bar;

void poo(){}

公开:
foo():m_bar (* this){}
};

错误C2248:''poo'':无法访问类中声明的私有成员
''foo''
什么我可以吗?
This code works on VC7.1. But VC6 refuses to compile.

class foo
{
class bar
{
friend class foo;
foo & m_f;
public:
bar(foo & f) : m_f(f) {}
void wii()
{
m_f.poo(); // #error C2248
}
} m_bar;

void poo() {}

public:
foo() : m_bar(*this) {}
};

error C2248: ''poo'' : cannot access private member declared in class
''foo''
What can I doo?




宣布课堂酒吧为foo的朋友:


class foo

{

班级栏; //成员的前瞻声明

朋友级酒吧;


班级酒吧

{

朋友班foo;

// ^^^^^^^^^^^^^^^^

//你真的需要这个吗?


foo& m_f;

public:

bar(foo& f):m_f(f){}

void wii()

{

m_f.poo(); // #error C2248

}

} m_bar;


void poo(){}

public:

foo():m_bar(* this){}

};


另一个选项是放弃这个过时的编译器。


V

-

请删除大写''A'的当通过电子邮件回复

我没有回复最热门的回复,请不要问



Declare classs bar as a friend of foo:

class foo
{
class bar; // forward-declaration of a member
friend class bar;

class bar
{
friend class foo;
// ^^^^^^^^^^^^^^^^
// do you really need this here?

foo & m_f;
public:
bar(foo & f) : m_f(f) {}
void wii()
{
m_f.poo(); // #error C2248
}
} m_bar;

void poo() {}

public:
foo() : m_bar(*this) {}
};

The other option is to abandon this outdated compiler for good.

V
--
Please remove capital ''A''s when replying by e-mail
I do not respond to top-posted replies, please don''t ask


Gernot Frisch写道:
Gernot Frisch wrote:
此代码适用于VC7.1。但VC6拒绝编译。

class foo
{
班级酒吧
{朋友班foo;
foo& m_f;
public:
bar(foo& f):m_f(f){}
void wii()
{
m_f.poo(); // #error C2248
}
} m_bar;

void poo(){}

公开:
foo():m_bar (* this){}
};

错误C2248:''poo'':无法访问类中声明的私有成员
''foo''
什么我可以吗?
This code works on VC7.1. But VC6 refuses to compile.

class foo
{
class bar
{
friend class foo;
foo & m_f;
public:
bar(foo & f) : m_f(f) {}
void wii()
{
m_f.poo(); // #error C2248
}
} m_bar;

void poo() {}

public:
foo() : m_bar(*this) {}
};

error C2248: ''poo'' : cannot access private member declared in class
''foo''
What can I doo?




你可以做任何其他类访问该成员:将

成员公开或制作栏foo的朋友。



The same you can do to make any other class access that member: Make the
member public or make bar a friend of foo.


这篇关于无法访问父类私有成员(VC6)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆