ぼく用あれこれまとめ
boostめも
最終更新:
Bot(ページ名リンク)
-
view
#include <iostream> #include <tchar.h> #include <Windows.h> #include <fstream> #include <boost\shared_ptr.hpp> // // メッセージインターフェイス // class IMsg { public: virtual ~IMsg() = 0 { ; } virtual unsigned int GetMsgType() const = 0; }; // // 文字列付きのメッセージ // class MsgString : public IMsg { public: [[explicit]] MsgString(unsigned int msgName, const TCHAR * str) : m_ident(msgName), m_string(str) { ; } ~MsgString() { ; } unsigned int GetMsgType() const { return m_ident; } const TCHAR * GetString() const { return m_string; } private: unsigned int const m_ident; const TCHAR * m_string; }; typedef boost::shared_ptr<IMsg> IMsgPtr; typedef boost::shared_ptr<MsgString> MsgStrPtr; enum { WRITE_A_LOG_FILE }; int main() { std::ofstream ofs(_T("test.txt"), std::ios::app); static const int buffer_size = 48; TCHAR buffer[buffer_size]; _stprintf_s( buffer, buffer_size, _T("Eureka Seven : %d"), 7); // // MsgStr1 // MsgStrPtr msgStr1 = MsgStrPtr( new MsgString(WRITE_A_LOG_FILE, buffer )); std::cout << msgStr1->GetString() << std::endl; ofs << msgStr1->GetString() << std::endl; // // MsgStrPtr -> IMsgPtr (up-cast) // IMsgPtr msg = msgStr1; // // IMsgPtr -> MsgStrPtr2 (down-cast) // MsgStrPtr msgStr2 = boost::dynamic_pointer_cast<MsgString>( msg ); std::cout << msgStr2->GetString() << std::endl; ofs << msgStr2->GetString() << std::endl; //std::cout << buffer << std::endl; while(1){}; return 0; }