不同参数的多态性

2023-11-23

是否有可能使用具有不同参数的相同名称的函数来实现多态性?

例如,我希望这三个功能合二为一。

virtual bool isValid1(const std::string&) = 0;
virtual bool isValid2(const uint32_t&) = 0;
virtual bool isValid3(const int& num) = 0;

换句话说,我有一个基地A和三个派生A类。我也有基地B包含基 A 类和 T(模板类型,可以是string, unit32 or int) 争论。当我想从基地打电话时B the isValid函数使用vector和论证(像这样:isValid(argument))我有点卡住了,因为我必须先知道是否要打电话isValid1(string), isValid2(uint32) or isValid3(int).

对于那些提出问题的人来说,有一些代码,

template <class T>
class Field
{
public:
    void addValidator(BaseValidator* validator) { m_validator.push_back(validator); }
    void validate() const { m_validator[0].isValid(m_data);}
private:
    std::vector<BaseValidator*> m_validator;
    T m_data;
};
  • 我选择多态性,但也欢迎其他类型的解决方案。
  • 如果问题太短而无法理解,请告诉我,以便我可以用不同的方法重写。

You can overload member functions. Even if they are pure virtual and meant to be overriden1:

virtual bool isValid(const std::string&) = 0;
virtual bool isValid(const uint32_t&) = 0;
virtual bool isValid(const int& num) = 0;

Now isValid(argument)将进行重载解析并选择要调用的重载(通过动态调度)。唯一的潜在问题是,最后两个重载对于某些参数可能同样有效,因此重载可能不明确。但这确实取决于T在它被召唤时。


1 - That's exactly what visitation is about, after all.

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

不同参数的多态性 的相关文章

  • 如何将 std::string& 转换为 C# 引用字符串

    我正在尝试将 C 函数转换为std string参考C 我的 API 如下所示 void GetStringDemo std string str 理想情况下 我希望在 C 中看到类似的东西 void GetStringDemoWrap r
  • STL 迭代器:前缀增量更快? [复制]

    这个问题在这里已经有答案了 可能的重复 C 中的预增量比后增量快 正确吗 如果是 为什么呢 https stackoverflow com questions 2020184 preincrement faster than postinc
  • 通过引用传递 [C++]、[Qt]

    我写了这样的东西 class Storage public Storage QString key const int value const void add item QString int private QMap
  • 机器Epsilon精度差异

    我正在尝试计算 C 中双精度数和浮点数的机器 epsilon 值 作为学校作业的一部分 我在 Windows 7 64 位中使用 Cygwin 代码如下 include
  • 如何从 Visual Studio 将视图导航到其控制器?

    问题是解决方案资源管理器上有 29 个项目 而且项目同时具有 ASP NET MVC 和 ASP NET Web 表单结构 在MVC部分中 Controller文件夹中有大约100个子文件夹 每个文件夹至少有3 4个控制器 视图完全位于不同
  • 如何从本机 C(++) DLL 调用 .NET (C#) 代码?

    我有一个 C app exe 和一个 C my dll my dll NET 项目链接到本机 C DLL mynat dll 外部 C DLL 接口 并且从 C 调用 C DLL 可以正常工作 通过使用 DllImport mynat dl
  • 需要帮助优化算法 - 两百万以下所有素数的总和

    我正在尝试做一个欧拉计划 http projecteuler net问题 我正在寻找 2 000 000 以下所有素数的总和 这就是我所拥有的 int main int argc char argv unsigned long int su
  • 访问外部窗口句柄

    我当前正在处理的程序有问题 这是由于 vista Windows 7 中增强的安全性引起的 特别是 UIPI 它阻止完整性级别较低的窗口与较高完整性级别的窗口 对话 就我而言 我想告诉具有高完整性级别的窗口进入我们的应用程序 它在 XP 或
  • 方程“a + bx = c + dy”的积分解

    在等式中a bx c dy 所有变量都是整数 a b c and d是已知的 我如何找到整体解决方案x and y 如果我的想法是正确的 将会有无限多个解 由最小公倍数分隔b and d 但我只需要一个解决方案 我可以计算其余的 这是一个例
  • 人脸 API DetectAsync 错误

    我想创建一个简单的程序来使用 Microsoft Azure Face API 和 Visual Studio 2015 检测人脸 遵循 https social technet microsoft com wiki contents ar
  • ASP.NET Core 3.1登录后如何获取用户信息

    我试图在登录 ASP NET Core 3 1 后获取用户信息 如姓名 电子邮件 id 等信息 这是我在登录操作中的代码 var claims new List
  • 在 Unity 中实现 Fur with Shells 技术

    我正在尝试在 Unity 中实现皮毛贝壳技术 http developer download nvidia com SDK 10 5 direct3d Source Fur doc FurShellsAndFins pdf Fins 技术被
  • 使用 C# 中的 CsvHelper 将不同文化的 csv 解析为十进制

    C 中 CsvHelper 解析小数的问题 我创建了一个从 byte 而不是文件获取 csv 文件的类 并且它工作正常 public static List
  • 如何获取 EF 中与组合(键/值)列表匹配的记录?

    我有一个数据库表 其中包含每个用户 年份组合的记录 如何使用 EF 和用户 ID 年份组合列表从数据库获取数据 组合示例 UserId Year 1 2015 1 2016 1 2018 12 2016 12 2019 3 2015 91
  • WcfSvcHost 的跨域异常

    对于另一个跨域问题 我深表歉意 我一整天都在与这个问题作斗争 现在已经到了沸腾的地步 我有一个 Silverlight 应用程序项目 SLApp1 一个用于托管 Silverlight SLApp1 Web 的 Web 项目和 WCF 项目
  • 实例化类时重写虚拟方法

    我有一个带有一些虚函数的类 让我们假设这是其中之一 public class AClassWhatever protected virtual string DoAThingToAString string inputString retu
  • 为什么使用小于 32 位的整数?

    我总是喜欢使用最小尺寸的变量 这样效果就很好 但是如果我使用短字节整数而不是整数 并且内存是 32 位字可寻址 这真的会给我带来好处吗 编译器是否会做一些事情来增强内存使用 对于局部变量 它可能没有多大意义 但是在具有数千甚至数百万项的结构
  • C++ 中的参考文献

    我偶尔会在 StackOverflow 上看到代码 询问一些涉及函数的重载歧义 例如 void foo int param 我的问题是 为什么会出现这种情况 或者更确切地说 你什么时候会有 对参考的参考 这与普通的旧参考有何不同 我从未在现
  • MySQL Connector C/C API - 使用特殊字符进行查询

    我是一个 C 程序 我有一个接受域名参数的函数 void db domains query char name 使用 mysql query 我测试数据库中是否存在域名 如果不是这种情况 我插入新域名 char query 400 spri
  • 类型或命名空间“MyNamespace”不存在等

    我有通常的类型或命名空间名称不存在错误 除了我引用了程序集 using 语句没有显示为不正确 并且我引用的类是公共的 事实上 我在不同的解决方案中引用并使用相同的程序集来执行相同的操作 并且效果很好 顺便说一句 这是VS2010 有人有什么

随机推荐

  • 相机启动预览失败

    我正在创建一个相机应用程序 但我遇到了问题startPreview 它向我发送 java lang RuntimeException startPreview failed 这是我的相机Activity public class Camer
  • Azure Web应用程序无法访问Azure DB

    我有一个带有 SQL 数据库和 asp net 5 Web 应用程序的 Azure 试用帐户 数据库服务器防火墙对我的本地计算机 IP 有一条规则 并且还启用了 允许访问 Azure 服务 复选框 我可以毫无意外地从本地 Sql Serve
  • 透明背景视图中的高程

    我有一个具有自定义背景的项目列表 背景是一个简单的形状 带有填充白色的圆角矩形绘图 所以我的观点类似于卡片 我可以在它上面设置一个高度并且它可以工作 它的下面有一个影子 但我想优化它 我的窗口背景是白色的 所以我想我可以删除View的背景颜
  • Python,将数据框中的每日数据汇总为每月和每季度

    我已经将数据加载到 Pandas 数据框中 Example Date Price 2012 12 02 141 25 2012 12 05 132 64 2012 12 06 132 11 2012 12 21 141 64 2012 12
  • 如何在 SQLAlchemy 中实现关注/关注者关系

    以推特为例 我们有一个User类 我们想将用户定义为Follower and Followed 我们希望有一个这样的方法u followers 它返回关注该用户的用户列表u 相似地 u following应该返回用户列表 该用户u正在跟随
  • 有没有办法知道用户点击了验证链接?

    这是我用来发送验证电子邮件的代码 取自官方docs var user firebase auth currentUser user sendEmailVerification then function Email sent catch f
  • 如何获取窗口标题按钮的大小和位置(最小化、恢复、关闭)

    是否有 API 调用来确定窗口标题按钮的大小和位置 我正在尝试将 vista 风格的标题按钮绘制到所有者绘制的窗口上 我正在处理c c mfc 编辑 有人有绘制关闭按钮的代码示例吗 我找到了获取 vista 中按钮位置所需的函数 WM GE
  • 我如何从 QWidget 和 QThread 继承?

    我有一堂这样的课 class GUI public QWidget public QThread 当我执行上述操作时 我收到有关连接信号的错误 The error says Reference to connect is ambiguous
  • MSN 天气 API 条件列表?

    微软有一个与谷歌非常相似的天气API 谷歌现在似乎已经完全消失了 我已将我的一个应用程序转换为他们的源 但我无法找到所有可能的天气条件的列表 Google 天气 API 对此有很好的记录 但我找不到 MSN 天气 API 的条件列表 FWI
  • jQuery 验证器 - 动态添加验证时无法调用未定义错误的方法“call”

    这是我动态更新 jQuery 验证的代码 在文档加载中我创建验证 此代码用于动态更新电话号码验证 应用此验证后 当我在电话号码文本框中输入任何内容时 我收到无法调用未定义错误的方法 call phone rules remove phone
  • 获取运行 Java 应用程序时使用的所有类的列表?

    获取运行 Java 应用程序时使用的所有类的列表的最简单方法是什么 假使 假设com package Foo main通过运行调用 java com package Foo 运行程序后 我希望获得运行程序时使用的所有类的列表 cat cla
  • 使用 boto 列出自动伸缩组中的实例

    我想列出当前在自动扩展组中运行的所有实例 用boto可以实现吗 ASG 和实例之间一定存在某种关系 因为 boto 具有shutdown instances内的方法boto ec2 autoscale group AutoScalingGr
  • MAMP-Windows 上的 MySQL 服务器无法启动

    我在 Windows 10 上使用 MAMP 4 1 无法启动 MySQL 服务器 当我卸载 MAMP 并重新安装它时 MySQL 服务器会启动 但是当我停止它时 它不会启动备份 我还进入 mamp db mysql 并删除了下面 hili
  • 在 Java Web 应用程序中存储和访问资源文件的最佳实践

    我有一堆文本 xml 和其他文件 即资源 我需要在 java web 应用程序中使用 servlet 访问它们 例如 有一个xml文件 其中一部分是由用户查询用servlet返回的 我正在使用汤姆猫 存储这些文件并从 java 代码访问它们
  • UI 路由器:多个独立视图

    我觉得这是一个直接的用例ui router但也许我错过了一些东西 我希望有两个相邻的独立视图由各自的菜单控制 当我点击一个ui sref一个菜单上的链接 或 state go就此而言 我只想更新其中一个观点 此外 两种观点中只需要反映其中一
  • 在应用程序计费 v3 中使用 IabHelper 出现 IllegalArgumentException

    我已经在我的应用程序中实施应用程序计费 v3 大约一周了 我使用了很多android的示例代码来简化集成 我经常记录一次崩溃 但似乎无法重现 Exception Type java lang RuntimeException Reason
  • 如何在 JavaScript Azure Functions 中共享代码?

    如何在 Azure 函数应用中的文件之间共享代码 例如 Mongo 架构定义 我需要这样做 因为我的函数需要访问共享的 mongo 架构和模型 例如这个基本示例 var blogPostSchema new mongoose Schema
  • 如何使用 MongoDB 递归查询树结构?

    例如树结构为 id 1 childrenIdList 2 3 id 2 childrenIdList 4 5 id 3 childrenIdList id 4 childrenIdList 6 7 id 5 childrenIdList i
  • 如何避免看似自动引用“父”命名空间?

    我相信我对命名空间层次结构有一个根本性的误解 导致了与这个问题几乎相反的问题 vb net 系统命名空间与同级命名空间冲突 我有两个 cs 文件 其中包含以下内容 File 1 namespace Parent Math public cl
  • 不同参数的多态性

    是否有可能使用具有不同参数的相同名称的函数来实现多态性 例如 我希望这三个功能合二为一 virtual bool isValid1 const std string 0 virtual bool isValid2 const uint32