bookobject.cpp

来自「个人电子图书管理系统.提供电子书的书名和其他信息.检查电子书信息的合法性(E-1」· C++ 代码 · 共 85 行

CPP
85
字号
// 静态模型
#pragma comment(lib, "Rpcrt4.lib" )
#include "BookObject.h"
#include <objbase.h>
namespace Library
{    
    
    /// <summary>使用一个uuid创建Object</summary>
    /// <param name="uuid">用字符串表示的一个全球唯一标识符</param>
    /// <remarks></remarks>
    BookObject::BookObject(std::string uuid):id(uuid)
    {
    }

    
    /// <summary>缺省构造函数</summary>
    /// <exception cref="KException">无法生成Guid</exception>
    /// <remarks>这个构造函数将调用BookObject::CreateID(), 以产生uuid</remarks>
    BookObject::BookObject()
    {
        try{
            id = CreateID();
        }
        catch(...){
            // 重新抛出异常
            throw;
        }

    }

    
    /// <summary>不产生ID的构造函数</summary>
    /// <param name="i">占位符</param>
    /// <remarks></remarks>
    BookObject::BookObject(int i)
    {}

    
    /// <summary>创建一个GUID</summary>
    /// <returns>返回用字符串表示的GUID</returns>
    /// <exception cref="KException">无法生成Guid</exception>
    /// <remarks>静态成员函数.无法生成Guid,可能的原因是操作系统
    /// </remarks>
    /*static*/ std::string BookObject::CreateID()
    {
        GUID gID;
        unsigned char* chID = NULL;
        if(CoCreateGuid(&gID) != RPC_S_OK)
        {
            throw KException("无法生成Guid");
        }
        if( UuidToStringA(&gID, &chID) != RPC_S_OK)
        {
            throw KException("无法生成Guid");
        }
        std::string strID((char*)chID);
        RpcStringFreeA(&chID);
        return strID;
    }

    
    /// <summary>从一个XML节点加载BookObject(或其派生类)</summary>
    /// <param name="elem">[IN]一个XML节点的指针,不能为空</param>
    /// <returns> 成功返回:0    失败返回: 其它值
    /// </returns>
    /// <remarks>虚函数, 具体行为由BookObject的派生类实现.</remarks>
    int BookObject::LoadFromXml(TiXmlElement* elem)
    {
        return 0;
    }

    
    /// <summary>把BookObject(或其派生类)的信息保存到一个XML节点</summary>
    /// <param name="elem">[IN]一个XML节点的指针,将根据信息的内容,重新构造节点的结构.不能为空</param>
    /// <returns> 成功返回:0    失败返回: 其它值
    /// </returns>
    /// <remarks>虚函数, 具体行为由BookObject的派生类实现.</remarks>
    int BookObject::SaveToXml(TiXmlElement* elem)
    {
        return 0;
    }


} // Library        

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?