带有struct的类.C ++

时间:2016-04-16 09:32:14

标签: c++ struct invoice

我有一个班级

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。

我知道他们的问题是发票,但我无法弄清楚。

主:

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

1 个答案:

答案 0 :(得分:3)

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

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,可能会导致严重的会计问题。