如何使用运算符<<打印类对象

2024-01-16

我想为 AutoData 类编写一个打印函数,其中包含有关汽车的信息。通过这个打印函数,我理想地希望打印出包含许多不同类对象的向量。我已经为对象的每个元素编写了 get 函数,但我仍然有点不确定如何使用这些函数来编写函数以以下格式打印数据:

mpg:cylinders:displacement:horsepower:weight:acceleration:modelYear:origin:carName

例如:

10.0:8:360.0:215.0:4615.:14.0:70:1:ford f250
10.0:8:307.0:200.0:4376.:15.0:70:1:chevy c20
11.0:8:318.0:210.0:4382.:13.5:70:1:dodge d200

班级是:

#include <string>
#include <vector>
#include <iostream>

using namespace std;

class AutoData {

public:
    AutoData()
    {
        mpg = 0;
        cylinders = 0;
        displacement = 0;
        horsepower = 0;
        weight = 0;
        acceleration = 0;
        modelYear = 0;
        origin = 0;
        carName = "";
    }

    AutoData( const AutoData & rhs)
    {
        setAuto(rhs.mpg, rhs.cylinders, rhs.displacement, rhs.horsepower, rhs.weight, rhs.acceleration, rhs.modelYear, rhs.origin, rhs.carName);
    }

    void setAuto(float mp, int cy, float di, float ho, float we, float ac, int mo, int o, string ca)
    {
        mpg = mp;
        cylinders = cy;
        displacement = di;
        horsepower = ho;
        weight = we;
        acceleration = ac;
        modelYear = mo;
        origin = o;
        carName = ca;
    }

    const float & getmpg( ) const
    {
        return mpg;
    }

    const int & getcylinders( ) const
    {
        return cylinders;
    }

    const float & getdisplacement( ) const
    {
        return displacement;
    }

    const float & gethorsepower( ) const
    {
        return horsepower;
    }

    const float & getweight( ) const
    {
        return weight;
    }

    const float & getacceleration( ) const
    {
        return acceleration;
    }

    const int & getmodelYear( ) const
    {
        return modelYear;
    }

    const int & getorigin( ) const
    {
        return origin;
    }

    const string & getcarName( ) const
    {
        return carName;
    }

    bool operator == (const AutoData & rhs ) const
    {
        if( getmpg( ) == rhs.getmpg( ) )
        {
            return gethorsepower( ) == rhs.gethorsepower( );
        }

        else
        {
            return false;
        }
    }

    bool operator > ( const AutoData & rhs ) const
    {
        if( rhs.getmpg( ) > getmpg( ) )
        {
            return true;
        }

        else if( getmpg( ) == rhs.getmpg( ) )
        {
            if( rhs.gethorsepower( ) > gethorsepower( ) )
            {
                return true;
            }
        }

        else
        {
            return false;
        }
    }


private:
    float mpg;
    int cylinders;
    float displacement;
    float horsepower;
    float weight;
    float acceleration;
    int modelYear;
    int origin;
    string carName;
};

任何人都可以提供的任何帮助/建议将非常感激!谢谢


如果你想能够做到std::cout << AutoData();,需要重载输出流运算符operator<<:

std::ostream& operator<<(std::ostream &out, AutoData const& data) {
    out << data.getmpg() << ':';
    out << data.getcylinders() << ':';
    // and so on... 
    return out;
}

该函数不是成员函数,并且由于每个属性都有 getter,因此不必将此函数声明为friend你们班的。

然后你可以这样做:

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

如何使用运算符<<打印类对象 的相关文章

  • SOAP Web 服务:多台服务器,一个接口

    我有一个场景 需要任意数量的服务器来提供相同的 SOAP Web 服务 我想生成一组代理类 并能够为它们提供一个位置 以便在运行时将它们指向不同的服务器 不幸的是 看起来好像wsdl port节点 子节点wsdl service 要求对特定
  • 来自 double 的 static_cast 可以优化分配给 double 吗?

    我偶然发现了一个我认为不必要的功能 并且通常让我感到害怕 float coerceToFloat double x volatile float y static cast
  • C++中类成员函数相互调用有什么好处?

    我是 C 新手 我发现下面的编程风格对我来说很有趣 我在这里写了一个简化版本 include
  • 获取列表框中视图中的项目

    我有一个 ListBox 其属性 VirtualizingStackPanel VirtualizationMode 设置为 回收 我正在绑定一个自定义集合 实现IList and IList
  • 在 C# 中解析 JS Date.toIsoString

    我需要将 JS 日期存储为 ISO 8601 日期 我目前正在从格式为 2019 06 22T00 00 00 000Z 的表单中获取日期 正如 JS 的 toIsoString 方法所期望的那样 当这个日期传递到我的 API 控制器时 我
  • TypeError:“NoneType”对象不可下标[重复]

    这个问题在这里已经有答案了 错误 names curfetchone 0 TypeError NoneType object is not subscriptable 我尝试检查缩进 但仍然有错误 我读到 如果数据库中没有文件名记录 变量名
  • 自己绘制的WPF自定义滑块

    这是我关于堆栈溢出的第一个问题 所以不要踢它 我在尝试创建 Mac 风格的滑块控件时遇到问题 我已经发现这个解决方案 http www codeproject com KB miscctrl MAC Slider aspx我已经在我的解决方
  • 使用 STL 流时如何格式化我自己的对象?

    我想将我自己的对象输出到 STL 流 但具有自定义格式 我想出了这样的东西 但由于我之前从未使用过 locale 和 imbue 所以我不知道这是否有意义以及如何实现 MyFacet 和operator 所以我的问题是 这是否有意义以及如何
  • 更改私有模块片段是否会导致模块重新编译?

    On 此页面有关 C 20 模块功能 https www modernescpp com index php c 20 modules private module fragment and header units 我发现了这样的说法 借
  • 如何从 Powerpoint 2010 导出电影?

    如何使用 MS Office PIA 主互操作程序集 或其他方式以编程方式将嵌入视频从 powerpoint 2010 导出到外部文件 在演示文稿中嵌入视频是 Powerpoint 2010 中的一项新功能 我找不到解决方案 PPTX 文件
  • 在 clang 中向量化函数

    我正在尝试根据此用 clang 对以下函数进行矢量化铿锵参考 http llvm org docs Vectorizers html 它采用字节数组向量并根据以下条件应用掩码this RFC https www rfc editor org
  • g++ / gcc 是否支持 C++20 新的atomic_flag 功能?

    根据参考参数 https en cppreference com w cpp atomic atomic flag c 20 有丰富的 对我来说有用的 支持atomic flag运营 然而 目前尚不清楚 gcc 是否支持这些功能 它们在任何
  • 使用未命名命名空间而不是静态命名空间

    我可以假设在未命名命名空间中声明的对象相当于static namespace int x 1 static int x 2 FWIK 在这两种情况下 x将具有静态存储期限和内部链接 声明为的对象的所有规则也是如此static适用于未命名名称
  • c++ - <未解析的重载函数类型>

    在我的班级里叫Mat 我想要一个将另一个函数作为参数的函数 现在我有下面 4 个函数 但是在调用 print 时出现错误 第二行给了我一个错误 但我不明白为什么 因为第一行有效 唯一的区别是功能f不是班级成员Mat but f2是 失败的是
  • 在多线程环境中捕获信号

    我有一个大型程序 需要尽可能具有弹性 并且有大量线程 我需要捕获所有信号SIGBUS SIGSEGV 并在必要时重新初始化有问题的线程 或者禁用该线程以继续减少功能 我的第一个想法是做一个setjump 然后设置信号处理程序 可以记录问题
  • 如何将模型绑定到动态创建的类 nancyfx

    首先感谢任何愿意查看我的问题的人 我对 Nancyfx 还很陌生 在尝试将 JSON 有效负载绑定到动态创建的类时遇到问题 我按照这篇文章中的代码动态创建了该类 在C 中动态创建一个类 https stackoverflow com que
  • 使用空的weak_ptr作为参数调用map::count安全吗?

    打电话安全吗map count http www cplusplus com reference map map count on an 未初始化因此为空weak ptr http en cppreference com w cpp mem
  • 将同步 zip 操作转换为异步

    我们有一个现有的库 其中一些方法需要转换为异步方法 但是我不确定如何使用以下方法执行此操作 错误处理已被删除 该方法的目的是压缩文件并将其保存到磁盘 请注意 zip 类不公开任何异步方法 public static bool ZipAndS
  • Adobe Illustrator 中的折线简化如何工作?

    我正在开发一个记录笔划的应用程序 您可以使用定点设备来绘制笔划 在上图中 我绘制了一个笔划 其中包含 453 个数据点 我的目标是大幅减少数据点的数量 同时仍然保持原始笔画的形状 对于那些感兴趣的人 上图笔画的坐标可以作为GitHub 上的
  • 扩展Android应用程序类

    当我正在寻找从远程设备获取错误报告的解决方案时 就像 iOS 中的试飞应用程序一样 我发现了acra适用于 Android 设备here http code google com p acra wiki BasicSetup 在基本设置中

随机推荐

  • Temporal 或 Uber Cadence 中子工作流程的良好用例是什么?

    我试图了解 Temporal Uber Cadence 子工作流程的用例 与简单地将工作流程拆分为函数相比 子工作流程有什么优势 我有一个相当复杂的工作流程 我正在考虑将其拆分为多个子工作流程 但我不确定这样做的利弊 子工作流可以由不包含父
  • 如何在Delphi 2010下设置泛型类型的前向声明?

    我遇到了一个似乎非常经典的问题 一个项目和一个集合类 两者都互相引用 需要前向声明 我正在使用 Delphi 2010 更新 5 这适用于非泛型类 但我无法解决泛型类型的 E2086 错误 type Forward declarations
  • 在 Mathematica 中自动生成和

    这是我在实现的过程中遇到的一个设计问题广义分配律 https citeseerx ist psu edu viewdoc summary doi 10 1 1 125 8954 假设需要自动生成如下形式的表达式 source yarosla
  • 为什么在数字化示例中 numpy 比 matlab 慢得多?

    我正在比较性能numpy 与 matlab 对比 在某些情况下 我观 察到 numpy 明显慢一些 索引 数组上的简单操作 如绝对值 乘法 求和等 让我们看一下下面的例子 这个例子有点引人注目 涉及到函数digitize 我计划用它来同步时
  • log4j 日志记录层次结构顺序

    log4j 日志记录的层次结构是什么 DEBUG INFO WARN ERROR FATAL 哪一个提供最高的日志记录 这有助于解决问题 任何人都可以提供从最高到最低进行日志记录的顺序或层次结构吗 谢谢 这张表可能对您有帮助 沿着第一列 您
  • iOS 8 数字转换/格式错误? (无法重现)

    以下方法从 UITextField 获取输入并设置其格式以供显示 该代码多年来一直完美运行 但刚刚在使用 iOS 8 1 的 iPhone 6 Plus 上报告了一个问题 对于用户来说每次都会发生这种情况 但我无法重现它 我相信这与 iOS
  • 为什么php命令行无法获取ip地址?

    我的 var www read php 中只有一行 并在本地计算机 127 0 0 1 上构建我的灯 echo SERVER REMOTE ADDR 当输入 127 0 0 1 read php 时 我得到输出 127 0 0 1 何时在控
  • scipy curve_fit 无法拟合 tophat 函数

    我正在尝试将高帽函数拟合到某些数据 即 f x 对于整条实数线来说是常数 但有限长度的一段除外 它等于另一个常数 我的参数是 tophat 函数的两个常量 中点和宽度 我尝试使用 scipy optimize curve fit 来获取所有
  • Go 依赖于 C 运行时吗?

    我找不到 Go 依赖于 C 运行时的信息吗 如果依赖的话 是否静态编译成二进制文件 使得Go编写的应用程序可以在任何地方运行而无需依赖 这里的主题是关于什么是 C 运行时 https stackoverflow com questions
  • Android Java 文本转语音查看额外字符串信息

    我已经浏览了许多适用于 Android 的文本到语音示例 并且我遇到了一个我认为非常简单的问题 但我一生都无法解决它 我只是希望能够查看 EXTRA AVAILABLE VOICES 的输出 例如 根据这个链接 http developer
  • 如何在没有任何.xml配置的情况下使用spring 3.X注释

    我是 Spring 新手 我不喜欢使用 xml 作为 spring 配置 所以我只想使用注释 以下是我的测试代码 它在没有 spring 的情况下运行良好 但是如果我使用 DI 并添加注释 Resource 我会得到 NullPointEx
  • 无法弄清楚如何在 while 循环内正确递增变量,C

    编辑 在我的 IDE 中重写代码后 今天我第八次犯了菜鸟错误 给我的输入提供了错误的数据类型 该错误已被修复 但我的输出仍然不正确 关于我的目标的详细信息 在进行找零时 您很可能希望最大限度地减少为每个客户分发的硬币数量 好吧 假设收银员欠
  • PHP 与 BASH 的 CLI 脚本比较? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我从未在 CLI 中使用过 PHP 但我见过使用 PHP 代码运行的脚本 我想知道 当 PHP 如此流行并且能够在 CLI 中运行时 我们为什么
  • Flash 游戏服务器建议(Node.js、Red5 等)

    快速总结 我们已经完成了一个类似于俄罗斯方块的 Flash 游戏 可以 链接 进行多人游戏 做了一些研究并在这里询问后 闪存套接字 点对点功能 https stackoverflow com questions 6921292 flash
  • 如何通过不同页面(上下文)共享来自 Streambuilder 的提供者数据

    我想在小部件上实时获取来自 firebase 的数据 当我尝试使用StreamProvider然后使用Navigator push 推送的小部件无法获取值Provider of context 我尝试把StreamProvider作为的父母
  • ASP.NET Core 5 MVC:httpContext.User 未在自定义 CultureProvider 中进行身份验证

    我必须在我的网络应用程序中添加本地化 请求是 grpc 服务将为所有用户提供默认语言 因此在启动时我尝试读取该值 但不知道如何在 new 中使用注册的服务CustomRequestCultureProvider public static
  • Android 上的库项目的独立测试项目

    我的问题是 如何创建 Android独立的Android 库的测试项目 我有我的安卓机library 在项目设置中标记为 库 和一个包含我的 JUnit 测试类的 Android 项目 这test项目正确引用了 Android 库 在 An
  • 在事务内的 Access 中执行 UPDATE SQL 时超出系统资源

    我正在执行一个简单的UPDATE tblTable SET DataSet 3在一个事务内 但在尝试运行它几秒钟后 我收到 3035 系统资源超出 大约有 30K 行 Dim db As DAO Database wrk As DAO Wo
  • 使用seaborn调整子图的大小

    我最近刚刚开始使用 matplotlib 和 seaborn 来绘制我的图表 这是我到目前为止编写的代码 count 1 l 13 0 47 29 10 plt figure figsize 30 40 for ww in l temp d
  • 如何使用运算符<<打印类对象

    我想为 AutoData 类编写一个打印函数 其中包含有关汽车的信息 通过这个打印函数 我理想地希望打印出包含许多不同类对象的向量 我已经为对象的每个元素编写了 get 函数 但我仍然有点不确定如何使用这些函数来编写函数以以下格式打印数据