小编DaC*_*lan的帖子

在C++中创建通用对象的最佳方法?

主要使用C#进行编程后,我发现自己在C++方面处于亏损状态.然而,我需要创建一个C++应用程序,因为它只是一个更大的C++解决方案中的一个组件.

情况

  • 我有一个包含数据组件(对象)的struct(Parent).这可能是任何类型的数据组件 - 即自定义结构.
  • 只有Parent(创建Parent incl对象)的编译器和终端接收器需要知道对象内部数据组件的类型,因为数据只与它们相关.
  • 然而,Parent结构可能会传递几个方法,对象甚至其他进程.
  • 对象的数据选项是有限的,编译器和反编译器都知道数据类型的不同选项.因此他们能够以原始形式反编译对象
  • 然而,这些类型可以扩展(即,虽然限制它不一定是固定的),并且反编译器和编译器将来会更新

问题 - 我不想使用"模板"重新创建可能遇到此数据组件的每个方法和对象...也看到将来可能更改数据类型建议每个进程遇到长对象的模板开始并不理想.

我正在寻找类似于C#Object的东西 - 并编写了以下组件

  • 这是一个很好的解决方案,还是我将来遇到问题
  • 是否可以对此进行改进?我没想过(特别是不包括Object\impl.h?
  • 有完全不同/更好的解决方案吗?

代码

  • 我的Header文件中有以下内容

    struct Object
    {
        Object();
        // Return true if value has succesfully been set
        // Return false if there is no compatibility between Value and result.
        template <typename T>
        bool GetValue(T &result);
        template<typename T>
        bool SetValue(T value);
        virtual LPVOID GetObjectAddress() = 0;
        virtual const char* GetType() = 0;
    };
    
    template<typename T>
    struct ObjectType:public Object
    {
            ObjectType(T value);
            T Value; …
    Run Code Online (Sandbox Code Playgroud)

c++ generics struct

7
推荐指数
1
解决办法
1972
查看次数

标签 统计

c++ ×1

generics ×1

struct ×1