とりあえずロベールのC++入門始める前に

今回はVC2005でやろうと思ってるんですが、(本当はEmacs使いたいけど、デバック環境どんなの使えばいいかわからないなんていえない><)なんか毎回プロジェクト作り直すのもめんどくさいんで、ファイル追加していく形で入門プロジェクトを作ろうかと思った。

んで、main関数内で基本クラスBaseClassのupdateを呼んでやって、これから作る各ページのコードはBaseClassを継承してupdateをオーバーライドして、update内にmain関数の処理を書かせるみたいな感じにした。

以下コード
main.h

#pragma once
#ifndef __MAIN_H__
#define __MAIN_H__

/**
	@file main.h
	@brief メインファイル
	@date 2008/04/08 Ver 0.00
*/

//------------------------------------------------------------
// Include File
//------------------------------------------------------------

//------------------------------------------------------------
// Class Definition
//------------------------------------------------------------
/**
	@brief ベースとなるクラス
	@date 2008/04/08 Ver 0.00
*/
class BaseClass
{
public:
	/**
		@brief デストラクタ
		@date 2008/04/08 Ver 0.00
	*/
	virtual ~BaseClass(){}

	/**
		@brief ここに各章でのmain部分を書いていく
		@date 2008/04/08 Ver 0.00
	*/
	virtual void update(){}

}; // BaseClass

#endif // __MAIN_H__

main.cpp

#include "main.h"
#include "sec1/helloworld.h"

int main()
{
	BaseClass* base = new HelloWorld();
	base->update();
	delete base;

	return 0;
}

helloworld.h

#include "../main.h"

class HelloWorld : public BaseClass
{
	~HelloWorld(){}

	void update();
};

helloworld.cpp

#include "helloworld.h"
#include <iostream>

using namespace std;

void HelloWorld::update()
{
	cout << "Hello World!\n" << endl;
}

main.cppでいちいち該当クラスをnewするのはめんどくさいので、もうちょっと明日は考えてみる。デザパタ的にはStrategyかCommandあたりになるのかなぁ。

ちなみにcout,endlを使うのは人生で3回目くらい。using namespaceもそんくらいかも。やっぱりはじめからみっちりやったほうがいいなと改めて思った。