簡體   English   中英

帶有struct的類.. C ++

[英]Class with struct in it.. C++

我有一堂課

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);

主要問題在這里(語法無效):

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會導致嚴重的會計問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM