虚函数和模板冲突

2023-12-04

我有一个 pointAccumulator 的抽象基类。这个抽象基础将填充方法,例如返回所有点的平均值的函数。这两个类的示例如下所示:

class lala {
public:
    virtual someFunctions = 0;

    virtual bool isEmpty() = 0;
};


class lalaLower : public lala {
public:
    lalaLower(){}
    ~lalaLower(){}


    someFunctions

    template<class Archive> void serialize(Archive & ar, const unsigned int version) {
        ar & heights_;
    }

protected:
    std::deque<double> heights_;
};

正如您在代码中看到的,我还想使用 boost 序列化来保存这些类型。现在使用工厂模式,我相信您可以像这样调用 pointAccumulator 类型:

lala *a1 = new lalaLower();

我的问题是,如果我以这种方式调用模板化序列化方法,则将无法访问它。另外,我不能在抽象类中使用模板类,因为 c++ 不允许这样做。有办法解决这个问题吗?

Edit:

我已经考虑过使用非侵入式的序列化方法,但这需要 height_ 是公开的,这并不理想,也不是良好的编程风格。我认为使用友元类或函数的方法可能可以渗透类并访问变量,同时仍然保持基类抽象?谁能解释一下这是如何工作的?


我认为使用友元类或函数是一个很好的解决方案,您可以添加新类,例如 Serializor

这是友元函数的示例

class Serializor;
class meanAccumulator : public pointAccumulator 
{ 
public:     
meanAccumulator(){}     
~meanAccumulator(){}     
double getHeight();     
void addHeight(double Height);     
void setHeight(double Height);     
bool isEmpty(){ return heights_.empty(); }      

protected:     std::deque<double> heights_; 
friend int Serializor::Func1( Serializor& );

};

参考http://msdn.microsoft.com/en-us/library/ahhw8bzz.aspx

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

虚函数和模板冲突 的相关文章

  • ROWNUM 的 OracleType 是什么

    我试图参数化所有现有的 sql 但以下代码给了我一个问题 command CommandText String Format SELECT FROM 0 WHERE ROWNUM lt maxRecords command CommandT
  • 创建 DirectoryEntry 实例以供测试使用

    我正在尝试创建 DirectoryEntry 的实例 以便可以使用它来测试将传递 DirectoryEntry 的一些代码 然而 尽管进行了很多尝试 我还是找不到实例化 DE 并初始化它的 PropertyCollection 的方法 我有
  • 如何在没有 Control.Invoke() 的情况下从后台线程修改控件属性

    最近 我们遇到了一些旧版 WinForms 应用程序 我们需要更新一些新功能 在专家测试该应用程序时 发现一些旧功能被破坏 无效的跨线程操作 现在 在您认为我是新手之前 我确实有一些 Windows 窗体应用程序的经验 我不是专家 但我认为
  • FFMPEG Seeking 带来音频伪影

    我正在使用 ffmpeg 实现音频解码器 在读取音频甚至搜索已经可以工作时 我无法找到一种在搜索后清除缓冲区的方法 因此当应用程序在搜索后立即开始读取音频时 我没有任何工件 avcodec flush buffers似乎对内部缓冲区没有任何
  • fgets() 和 Ctrl+D,三次才能结束?

    I don t understand why I need press Ctrl D for three times to send the EOF In addition if I press Enter then it only too
  • 跨多个控件共享事件处理程序

    在我用 C 编写的 Windows 窗体应用程序中 我有一堆按钮 当用户的鼠标悬停在按钮上时 我希望按钮的边框发生变化 目前我有以下多个实例 每个按钮一个副本 private void btnStopServer MouseEnter ob
  • A* 之间的差异 pA = 新 A;和 A* pA = 新 A();

    在 C 中 以下两个动态对象创建之间的确切区别是什么 A pA new A A pA new A 我做了一些测试 但似乎在这两种情况下 都调用了默认构造函数 并且仅调用了它 我正在寻找性能方面的任何差异 Thanks If A是 POD 类
  • Windows 窗体不会在调试模式下显示

    我最近升级到 VS 2012 我有一组在 VS 2010 中编码的 UI 测试 我试图在 VS 2012 中启动它们 我有一个 Windows 窗体 在开始时显示使用 AssemblyInitialize 属性运行测试 我使用此表单允许用户
  • 如何在 Team Foundation 上强制发表有意义的签入评论?

    我有一个开发团队有一个坏习惯 他们写道poor签入评论 当我们必须在团队基础上查看文件的历史记录时 这使得它成为一场噩梦 我已经启用了变更集评论政策 这样他们甚至可以在签到时留下评论 否则他们不会 我们就团队的工作质量进行了一些讨论 他们很
  • 什么是 C 语言的高效工作流程? - Makefile + bash脚本

    我正在开发我的第一个项目 该项目将跨越多个 C 文件 对于我的前几个练习程序 我只是在中编写了我的代码main c并使用编译gcc main c o main 当我学习时 这对我有用 现在 我正在独自开展一个更大的项目 我想继续自己进行编译
  • 在 URL 中发送之前对特殊字符进行百分比编码

    我需要传递特殊字符 如 等 Facebook Twitter 和此类社交网站的 URL 为此 我将这些字符替换为 URL 转义码 return valToEncode Replace 21 Replace 23 Replace 24 Rep
  • 将日期参数传递给对 MVC 操作的 ajax 调用的安全方法

    我有一个 MVC 操作 它的参数之一是DateTime如果我通过 17 07 2012 它会抛出一个异常 指出参数为空但不能有空值 但如果我通过01 07 2012它被解析为Jan 07 2012 我将日期传递给 ajax 调用DD MM
  • 已过时 - OpenCV 的错误模式

    我正在使用 OpenCV 1 进行一些图像处理 并且对 cvSetErrMode 函数 它是 CxCore 的一部分 感到困惑 OpenCV 具有三种错误模式 叶 调用错误处理程序后 程序终止 Parent 程序没有终止 但错误处理程序被调
  • 如何在内存中存储分子?

    我想将分子存储在内存中 这些可以是简单的分子 Methane CH4 C H bond length 108 7 pm H H angle 109 degrees But also more complex molecules like p
  • ListDictionary 类是否有通用替代方案?

    我正在查看一些示例代码 其中他们使用了ListDictionary对象来存储少量数据 大约 5 10 个对象左右 但这个数字可能会随着时间的推移而改变 我使用此类的唯一问题是 与我所做的其他所有事情不同 它不是通用的 这意味着 如果我在这里
  • Bing 地图运行时错误 Windows 8.1

    当我运行带有 Bing Map 集成的 Windows 8 1 应用程序时 出现以下错误 Windows UI Xaml Markup XamlParseException 类型的异常 发生在 DistanceApp exe 中 但未在用户
  • 窗体最大化时自动缩放子控件

    有没有办法在最大化屏幕或更改分辨率时使 Windows 窗体上的所有内容自动缩放 我发现手动缩放它是正确的 但是当切换分辨率时我每次都必须更改它 this AutoScaleDimensions new System Drawing Siz
  • 如何连接字符串和常量字符?

    我需要将 hello world 放入c中 我怎样才能做到这一点 string a hello const char b world const char C string a hello const char b world a b co
  • 将 viewbag 从操作控制器传递到部分视图

    我有一个带有部分视图的 mvc 视图 控制器中有一个 ActionResult 方法 它将返回 PartialView 因此 我需要将 ViewBag 数据从 ActionResult 方法传递到 Partial View 这是我的控制器
  • 不同类型的指针可以互相分配吗?

    考虑到 T1 p1 T2 p2 我们可以将 p1 分配给 p2 或反之亦然吗 如果是这样 是否可以不使用强制转换来完成 或者我们必须使用强制转换 首先 让我们考虑不进行强制转换的分配 C 2018 6 5 16 1 1 列出了简单赋值的约束

随机推荐

  • R 中具有动态条件的子集数据

    我有一个包含 2500 行的数据集 其中都是银行贷款 每笔银行贷款都有未偿还金额和抵押品类型 房地产 机床等 我需要从该数据集中随机选择一个 例如未偿金额总和 250 万 5 以及相同资产类别的最大 25 贷款 我找到了函数 optim 但
  • Angular 6 FormGroup.disable() 方法不适用于我的模板驱动的 NgForm

    当我尝试在 Angular 6 应用程序中的 formGroup 上使用禁用方法时 我在浏览器控制台中收到此错误 类型错误 this personForm disable 不是一个函数 Although the method is ment
  • Google Speech API 的 Base64 解码失败

    我尝试发送 POST 请求至https speech googleapis com v1 speech recognize使用 JSON 和下面的代码片段 不知何故 谷歌回应说无法解码我的请求中的 Base 64 配置 编码 LINEAR1
  • 鸡蛋掉落拼图 - 需要建议

    问题陈述 掉蛋是指一类问题 其中重要的是找到正确的响应而不超过某些失败状态的 低 数量 在一个玩具示例中 有一座地板塔和一个装有理想鸡蛋的滴蛋器 理想鸡蛋的物理特性是 如果从地板或上方掉落 它会碎裂 如果从地板或下方掉落 则不会造成任何损坏
  • 浏览器后退按钮的注销问题

    我使用 ASP Net MVC 4 创建了登录 注销功能 我使用自己创建的表单根据 Active Directory 对用户进行身份验证 它的功能运行良好 安全方面仍然存在一个大问题 用户单击注销链接后 他 她成功注销并再次重定向到登录表单
  • 引用代替吸气剂?

    在 C 中使用引用代替 getter 是一种不好的做法吗 例如 class X int mP public const int P X P mP 然后 X xl int h xl P 只需考虑重构以使访问线程安全 这种方式不会很好地工作 并
  • 可以 lapply 连续传递(到函数)存储在向量中的值

    我需要 lapply 来连续传递 到函数 存储在向量中的值 values lt c 10 11 13 10 lapply foo function x peakabif x npeaks values 所以要得到 peakabif x1 n
  • 文本区域自动换行

    使用 jQuery 如何制作一个文本区域 在光标接近末尾时插入文本时自动添加新行 文本区域的宽度是通过 CSS 动态完成的 例如 myTextArea width 80 所以我不能做任何事情 比如计算每行中的字符 我不需要非 JS 解决方案
  • 使用 PHP 在电子邮件中发送多个附件

    我在发送包含多个附件的电子邮件时遇到问题 这是代码
  • 如何让我的 git(Windows 上的 msysgit)提交后脚本将我的 python 脚本作为 python 而不是 bash 调用?

    我用 python 编写了一个提交后脚本 c myfolder myscript py 我想从提交后脚本调用它 这没有找到它 bin sh c myfolder myscript py bash 认为命令 c myfoldermyscrip
  • 在同一个图中绘制两个图

    我想在同一个图中绘制 y1 和 y2 x lt seq 2 2 0 05 y1 lt pnorm x y2 lt pnorm x 1 1 plot x y1 type l col red plot x y2 type l col green
  • 如何在 swift 2.2 中捕获 NSUnknownKeyException?

    我有一个代码 我想设置键的值 如下所示 item setValue field 1 forKey field 0 我想捕获是否抛出 NSUnknownKeyException 但我有以下代码但它不起作用 do try item setVal
  • 当“显示临时标头”时,Chrome 不显示请求 cookie

    当我在服务器应用程序中设置断点并使用 Chrome 向暂停的端点发出请求时 当调试器位于其上时 cookie 不会显示在请求中 我花了一些时间调试为什么客户端不发送 cookie 直到我意识到发生了什么 cookie 存在但不显示 为什么会
  • 使用 strrev 在 C++ 中正确反转字符串

    我希望用户输入 strrev 的字符串来反转 但是当用户输入字符串时 由于某种原因不允许使用空格 所以如果有人输入 hello 我的名字是 stan 输出仅为 nats 我怎样才能让函数接受空格 include
  • 将 click() 事件附加到 Twitter 关注按钮?

    我想在用户单击 关注 按钮时在页面上添加提醒消息 我怎样才能做到这一点 这是代码 a href https twitter com prajapat2010 class twitter follow button Follow prajap
  • 通过 CSS 调整 BUTTON 的大小

    我使用 jquery mobile 生成按钮 下面有一个 CSS 代码来更改其设计 但无论我在宽度和高度中输入什么值 按钮的大小都不会改变 但它相对依赖于字体大小标签 如何更改此设置 以便无论标签的字体大小如何都可以更改按钮大小 ui 1
  • 在 Java 中使用 MongoDB 中的日期范围进行查询

    我是 MongoDB 的新手 我里面装满了收据 例如 一张收据看起来像这样 id oid 510fa057c6f818c2bfd0b279 StoreName Metro StoreNumber 521 Items ItemName Bat
  • 您不能将自定义标题与其他标题功能结合起来

    在我的应用程序中 我使用 ActionBarSherlock 库 我还使用自定义标题栏 这是我的 onCreate requestWindowFeature Window FEATURE CUSTOM TITLE setContentVie
  • 从父母到孩子该选择什么类型的演员?

    这个问题是关于哪个C 风格转换应该用来进行这种转换 我知道 C 风格的强制转换可以实现这一点 对于以下class结构 class Foo class Bar public Foo 说我被给予 Foo ptr 我想把它投射到Bar 我应该使用
  • 虚函数和模板冲突

    我有一个 pointAccumulator 的抽象基类 这个抽象基础将填充方法 例如返回所有点的平均值的函数 这两个类的示例如下所示 class lala public virtual someFunctions 0 virtual boo