今天在某个工程的代码无意看到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无法访问,所以尽量不要这样写。