类,其中包含结构.C++

Class with struct in it.. C++

本文关键字:结构 C++ 包含      更新时间:2023-10-16

我有一个类

class piet3 : public Pieteikums
{
public:
piet3();
virtual ~piet3();
void set_invoice(string nDate, float nPrice);
protected:
private:
struct invoice
{
    string date;
    float price;
};
invoice arr[30];
};

我的cpp:

#include <iostream>
#include "piet3.h"
using namespace std;
piet3::piet3()
{
}
piet3::~piet3()
{
}
void piet3::set_invoice(string nDate, float nPrice)
{
struct invoice.date = nDate;
}

基本上,我想做的是。我想让用户输入他们花费的价格和发生的日期,并将其作为结构体放在数组中。

类似于arr[0]=struct1,arr[1]=struct2。

我知道他们的问题是发票,但我想不通。

main:

//everything before is declared
piet3 object;
cin >> date;
cin >> price;
object.set_invoice (date,price);

主要问题在这里(无效语法):

void piet3::set_invoice(string nDate, float nPrice)
{
  struct invoice.date = nDate;
}

你应该有这样的东西:

void piet3::set_invoice(string nDate, float nPrice)
{
  arr[lines].date = nDate;
  arr[lines].price = nPrice;
  ++lines;
}

lines是要添加的新的私有数据成员,用于对发票的记录进行计数。

更好的是,您可以使用vector而不是原始数组:

#include <vector>
// ...
private:
  struct invoice
  {
    string date;
    float price;
  };
  vector<invoice> arr;
};  // class piet3

您不需要添加lines数据成员,也没有发票的30记录限制:

void piet3::set_invoice(string nDate, float nPrice)
{
  arr.push_back({nDate, nPrice});
}

还考虑到对于真实的软件float/double可能会引起重大的会计问题。