🛰️航天仿真算法库 SpaceAST 0.0.1
载入中...
搜索中...
未找到
SatelliteImpl.hpp
浏览该文件的文档.
1
20
21#pragma once
22
23#include "AstGlobal.h"
24#include "ObjectImpl.hpp"
25#include "AstCOM/COMAPI.hpp"
26#include "AstCOM/LinkToObject.hpp"
27#include "AstCOM/SaVO.hpp"
28#include "AstSim/Satellite.hpp"
29#include "AstSim/SpaceObject.hpp"
30
31AST_NAMESPACE_BEGIN
32
38class Satellite;
39class CLinkToObject;
40class CSaVO;
41
42template <typename T, const IID* piid = &__uuidof(T)>
43class ISatelliteImpl : public IObjectImpl<T, piid>
44{
45public:
46 ISatelliteImpl() = default;
47 ~ISatelliteImpl() = default;
48
49
50
51 HRESULT __stdcall get_ReferenceVehicle(ILinkToObject** ppRetVal) override
52 {
53 if (ppRetVal == nullptr)
54 return E_POINTER;
55 *ppRetVal = nullptr;
56
57 Satellite* sat = GetNativeSatellite();
58 if (sat == nullptr)
59 return S_OK;
60
61 CComObject<CLinkToObject>* linkToObject = nullptr;
62 HRESULT hr = CComObject<CLinkToObject>::CreateInstance(&linkToObject);
63 if (FAILED(hr))
64 return hr;
65 linkToObject->SetNativeParentObject(sat);
66 linkToObject->AddRef();
67 *ppRetVal = linkToObject;
68
69 return S_OK;
70 }
71
72 HRESULT __stdcall get_VO(ISaVO** ppRetVal) override
73 {
74 if (ppRetVal == nullptr)
75 return E_POINTER;
76 *ppRetVal = nullptr;
77
78 CComObject<CSaVO>* vo = nullptr;
79 HRESULT hr = CComObject<CSaVO>::CreateInstance(&vo);
80 if (FAILED(hr))
81 return hr;
82 vo->AddRef();
83 *ppRetVal = vo;
84 return S_OK;
85 }
86
87public: // 辅助函数
88 Satellite* GetNativeSatellite() const
89 {
90 return this->GetNative<Satellite*>();
91 }
92};
93
94
97AST_NAMESPACE_END
定义 ObjectImpl.hpp:45
定义 SatelliteImpl.hpp:44
卫星对象
定义 Satellite.hpp:35
定义 AstCOM.idl:40
定义 AstCOM.idl:94