私は現在、クラス ヘッダー ファイルで構造体を作成しようとする際に多くの問題を抱えています。パブリックアクセサーとミューテーターでは、変数は「宣言されていない識別子」であり、メインの.cppファイルから構造体配列を参照し、開いているファイルから変数を構造体の要素に割り当てる方法がわかりません配列。
//ヘッダーファイル
#ifndef FOO_H
#define FOO_H
#include <string>
#include <iostream>
using namespace std;
class Foo
{
private:
struct bag
{
string name;
int amount;
enum tax { food, medicine } type;
};
public:
//Unsure about constructor with enum type
string getName() const
{ return name; }
int getAmount() const
{ return amount; }
void setItem(string);
void setAmount(int);
void setTaxCat(int);
};
static const float foodTax = .05, medicineTax = .04;
#endif
//実装ファイル
#include "Foo.h"
#include <string>
using namespace std;
void Foo::setItem(string item)
{ name = item; }
void Foo::setAmount(int qty)
{ amount = qty; }
void Foo::setTaxCat(int tx)
{ type = static_cast<tax>(tx); }
//メインプログラム
#include "Foo.h"
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main()
{
string item;
int qty;
int tx;
ifstream inputFile;
string fileName;
const in size = 20;
cout << "Enter file name: ";
getline(cin, fileName);
inputFile.open(fileName.c_str(), ios::in);
bag items[] //Unsure how to create array from the struct in the class header file
for(int index = 0; index < size; index++)
{
while(index < size && !inputFile.eof())
{
getline(inputFile, item, '#');
items[index]->setItem(item); //unsure how to send items to
getline(inputFile, qty, '#');
items[index]->setAmount(qty);
getline(inputFile, tx, '#');
items[index]->setTaxCat(tx);
}
}
inputFile.close();
return 0;
}
これが参照しているファイルの例です
卵#12#食べ物
咳止め#2#薬