C++ 中的构造函数和对象数组

2023-11-26

我正在尝试用 C++ 创建一个应用程序。在应用程序中,我有默认构造函数和另一个带有 3 个参数的构造函数。 用户从键盘提供一个整数,该整数将用于使用非默认构造函数创建对象数组。 不幸的是,到目前为止我还无法完成它,因为我在创建对象数组时遇到问题,它们将使用非默认构造函数。 有什么建议或帮助吗?

#include<iostream>
#include<cstring>
#include<cstdlib>
#include <sstream>

using namespace std;

class Station{

public:
    Station();
    Station(int c, char *ad, float a[]);    
    ~Station(); 


    void setAddress(char * addr){

        char* a;
        a = (char *)(malloc(sizeof(addr+1)));
        strcpy(a,addr);
        this->address = a;
    }

    void setCode(int c){
        code=c; 
    }

    char getAddress(){
        return *address;
    }

    int  getCode(){
        return code;
    }


    float getTotalAmount(){
        float totalAmount=0;
        for(int i=0;i<4;i++){
            totalAmount+=amount[i];
        }
        return totalAmount;
    }

    void print(){

        cout<<"Code:"<<code<<endl;
        cout<<"Address:"<<address<<endl;
        cout<<"Total Amount:"<<getTotalAmount()<<endl;
        cout<<endl;
    }


private:
    int code;
    char *address;
    float amount[4];

};


Station::Station(){
    code= 1;
    setAddress("NO ADDRESS GIVEN");
    amount[0]= 0.0;
    amount[1]= 0.0;
    amount[2]= 0.0;
    amount[3]= 0.0;

}


Station::Station(int c, char *ad, float a[]){

    if( (c>=1&& c<=10 ) ){
        code=c;
        address=ad;

        for(int i=0;i<4;i++){
            amount[i]=a[i]; 
        }   

    }else{

        code= 1;

        setAddress("NO ADDRESS GIVEN");
        amount[0]= 0.0;
        amount[1]= 0.0;
        amount[2]= 0.0;
        amount[3]= 0.0;
    }   
}   


Station::~Station(){

}

int main(){

    int size,code;
    char *addrr;
    addrr = (char *)(malloc(sizeof(addrr+1)));
    float mes[4];

    do{ 
        cout<<"size of array:";
        cin>>size;

    }while(size<=0 || size>=11);

    //  Station *stations= new Station[size];
    //  Station** stations = new Station*[size];
    Station stations[size];

    for(int i=0;i<size;i++){

        cout<<"code:";
        cin>>code;

        cout<<"address:";
        cin>>addrr;

        double amo=0;

        for(int k=0;k<4;k++){
            cout<<"values"<<k+1<<":";
            cin>>mes[k]; 
        }
    }
    /*
    for(int q=0;q<size;q++){
        stations[q].print();
    }
    */

    return 0;
}

我将从中汲取的价值观cin我想将它们分配给数组的对象!


您可以创建默认初始化的数组,然后用所需的对象填充该数组:

foo arr[10];
std::fill(arr, arr+10, foo(some, params));

或者你可以使用std::vector并执行以下操作:

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

C++ 中的构造函数和对象数组 的相关文章

随机推荐

  • 当我在 Windows 上克隆带有符号链接的存储库时会发生什么?

    关于在 Windows 上添加符号链接的支持存在很多问题 但是 当我克隆时实际发生了什么带有符号链接的存储库在 Windows 上 Since 版本1 5 3本机 Git 客户端git clone and git init将探测目标文件系统
  • 当程序崩溃且没有异常时如何调试程序?

    我的一个程序定期崩溃 但我不知道为什么 我在调试模式下运行它 但没有弹出任何内容 程序突然退出了 我遇到过其他确实引发异常的错误 但不是这个 有什么神奇的方法可以抓住它吗 假设您是从 Visual Studio 中运行它 并且由于某种原因
  • ADB 无法识别 Samsung Gear Live 或 LG G 手表

    我正在尝试执行adb在 Windows 7 上的 Samsung Gear Live 手表上 我似乎没有找到设备驱动程序来让它被 ADB 识别 这是我已经拥有的 我已经在 Gear Live 中启用了 ADB 调试 我转到设备管理器并将 g
  • 如何使用 log4net 记录 Threadpool 线程的正确上下文?

    我正在尝试找到一种方法来从一堆线程中记录有用的上下文 问题是 许多代码是在通过线程池线程到达的事件上处理的 据我所知 因此它们的名称与任何上下文都没有关系 该问题可以通过以下代码来演示 class Program private stati
  • Haxe - 打印命令行参数

    使用 Haxe 编程语言 是否可以打印传递给应用程序的命令行参数 我正在尝试在 Haxe 中重写这个 Java 程序 它只是打印命令行参数 public class JavaExample public static void main S
  • 在没有身份的情况下使用 Bearer/Jwt 授权

    我正在使用 Asp 5 开发 Web API 并阅读了一些有关 Web API 的文档 意识到我需要 Bearer 授权 经过查找 没有发现任何未经授权使用的文档或样本Aspnet Identity 我有自己的会员资格 但我不想使用Iden
  • 实现命令模式

    我正在设计一个应用程序 我想使用命令模式用于撤消 重做目的 我对命令模式做了一些研究 但我唯一不明白的是 命令是否应该具有撤消和重做方法 或者我应该创建两个单独的命令 一个用于撤消 一个用于重做 并从主命令本身 命令对象本身应该实现撤消 重
  • 单击 Facebook Like 按钮后显示内容

    我有一个网页部分 我只希望人们在单击 Facebook Like 按钮后能够访问该部分 如何隐藏该特定区域 然后仅在有人单击 赞 按钮后才显示它 至于 Facebook Like 代码 如下所示
  • 了解 PHP &(与号、按位与)运算符

    我经常使用 var 1 在我的代码中 如果 var是奇数 如果是偶数则为 false 但 实际上有什么作用呢 是二进制的and 如果你有一个二进制值 并且你and与另一个二进制值 则结果将是按位and两者之中 一个例子 01101010 0
  • 如何检索原始函数的形式?

    至少目前 这对我来说是一个学习练习 所以实际功能或其复杂性不是问题 假设我编写一个函数 其参数列表包含一些输入变量和函数名称 以字符串形式传递 然后 该函数在内部计算一些变量 并 决定 如何将它们提供给我传入的函数名称 对于非原始函数 我可
  • Chrome 扩展:webRequest.onBeforeSendHeaders 行为奇怪

    我正在尝试向 Chrome 扩展程序中的某些 AJAX 请求添加 Referer HTTP 标头 您无法直接在 AJAX 请求中更改它 因此我尝试使用网络请求 API chrome webRequest onBeforeSendHeader
  • Laravel Mail::send() 发送到多个收件人或密件抄送地址

    我似乎无法成功发送至multiple使用 Laravel 时的地址Mail send 回调 但是当我只指定时 代码确实有效one接受者 我尝试过链接 for example emails array email protected emai
  • 无法在已停止的 SparkContext 上调用方法

    当我运行以下测试时 它会抛出 无法在已停止的 SparkContext 上调用方法 可能的问题是我使用TestSuiteBase和流 Spark 上下文 在行val gridEvalsRDD ssc sparkContext paralle
  • 使用 linq 删除列表中的重复项

    我有课Items with properties Id Name Code Price 名单Items填充有重复的项目 例如 1 Item1 IT00001 100 2 Item2 IT00002 200 3 Item3 IT00003 1
  • 使用数据注释的有条件必需的属性

    我有一堂这样的课 public class Document public int DocumentType get set Required public string Name get set Required public strin
  • JAVA使用google语音识别API

    我正在尝试使用谷歌语音识别 API 这是我写的代码 http pastebin com zJEhnJ74 有用 我从服务器得到答案 status 5 id 8803471b14a2310dfcf917754e8bd4a7 1 hypothe
  • MySQL - 唯一外键

    我必须使其中一个外键唯一 问题是 我从 phpMyAdmin 收到以下消息 The following indexes appear to be equal and one of them should be removed consign
  • 查询 DNS 服务记录以查找主机名和 TCP/IP

    在一篇关于生命科学标识符 see LSID Tester 用于测试生命科学标识符解析服务的工具 罗德里克 DM 佩奇博士写道 给定 LSID urn lsid ubio org namebank 11815 在 DNS 中查询 SRV 记录
  • 从已使用的命名空间中排除类

    我所有 C 文件的第一条语句是 使用系统 现在 在框架版本 4 中 该命名空间包含一个名为 Action 的类 这也是我自己的代码中经常使用的命名空间中的类的名称 现在当然有冲突 当然 我可以通过在我之前使用 Action 的地方使用显式的
  • C++ 中的构造函数和对象数组

    我正在尝试用 C 创建一个应用程序 在应用程序中 我有默认构造函数和另一个带有 3 个参数的构造函数 用户从键盘提供一个整数 该整数将用于使用非默认构造函数创建对象数组 不幸的是 到目前为止我还无法完成它 因为我在创建对象数组时遇到问题 它