とりあえずロベールの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もそんくらいかも。やっぱりはじめからみっちりやったほうがいいなと改めて思った。