// 28_28-4.cpp : コンソール アプリケーションのエントリ ポイントを定義します。
//

#include "stdafx.h"
#include <iostream>
#include <windows.h>
#include < cstring>

using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
	int dt = 100;
	const int *cp1;
	int *p2;
	const int *cp3;

	cout << "(1)dt=" << dt << '\n';

	cp1 = &dt;
	//*cp1 = 200;	// NG。constなので代入できない
	*const_cast<int*>(cp1) = 200;	// const除去すればOK
	cout << "(2)dt=" << dt << " *cp1=" << *cp1 << '\n';

	//p2 = cp1;	// エラー
	p2 = const_cast<int*>(cp1);	// cp1をconst除去してp2に設定
	*p2 = 300;
	cout << "(3)dt=" << dt << " *cp1=" << *cp1 << " *p2=" << *p2 << '\n';

	cp3 = const_cast<const int*>(p2);
	//*cp3 = 400;
	*const_cast<int*>(cp3) = 400;
	cout << "(4)dt=" << dt << " *cp1=" << *cp1 << " *p2=" << *p2 << " *cp3=" << *cp3 << '\n';



	MessageBox(NULL, _T("Check Console Window"), L"MessageBox", MB_OK);

	return 0;
}

