今天在某个工程的代码无意看到rt所述的情况,写了个简单的测试程序来测试,发现应该是vc6特有这个问题
#include <cstdio>
class A
{
public:
A() {
m_nData1 = 1;
}
private:
int m_nData1;
static int s_nData2;
};
int A::s_nData2 = 2;
class B : public A
{
public:
void TestVisit(void)
{
// printf("%d\n", A::m_nData1);
// printf("%d\n", s_nData2);
printf("%d\n", A::s_nData2);
}
};
int main()
{
B objB;
objB.TestVisit();
// printf("%d\n", A::s_nData2);
return 0;
}
B的类方法中这句,printf("%d\n", A::s_nData2);
这句,只有vc6能编译过,vs2008/DevC++都会提示private无法访问,所以尽量不要这样写。
本文讨论了在 VC6 编译器下遇到的一个特殊情况,即在类方法中访问私有成员时,VS2008 和 DevC++ 会提示错误。通过一个简单的测试程序,展示了这一现象,并建议避免此类写法。

537

被折叠的 条评论
为什么被折叠?



