vc 6のprivate static変数が派生クラスにアクセスできる可能性のある問題

665 ワード

今日ある工事のコードでrtが述べた情況を何気なく見て、簡単なテストプログラムを書いてテストして、vc 6特有のこの問題であるべきだと発見しました
#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
", A::m_nData1); // printf("%d
", s_nData2); printf("%d
", A::s_nData2); } }; int main() { B objB; objB.TestVisit(); // printf("%d
", A::s_nData2); return 0; }

Bのクラスメソッドではprintf("%d",A::s_nData 2);
この文は、vc 6だけがコンパイルでき、vs 2008/DevC++はprivateがアクセスできないことを示すので、できるだけ書かないでください.