-2

この質問については、ネット上にすでにいくつかの投稿があることを理解しています。しかし、答えは私を助けません:(誰かが私を助けることができますか?私はかなりの数のクラスを持っていますが、これらのエラーはそれらすべてに適用されたわけではありません.これらのエラーは「ランダムに」発生し、どこにあるのかわかりません私は見始めますか。

私が試したが役に立たなかった解決策:

  1. プリコンパイル済みヘッダー ファイル stdafx.h を含む
  2. #include pragma once
  3. すべてのことifndefをしたdefine

さらに、次のような奇妙なエラーも発生します。

Error   507 error C2275: '_iobuf' : illegal use of this type as an expression 

他の多くの構文エラーと同様に。

私は 10 個の .h ファイルと .cpp ファイルを持っているので、上記のエラーのあるファイルを 2 組だけコピーして貼り付けました。誰でもこれで私を助けてもらえますか? ありがとうございました!

//storage.h ファイル

    #pragma once
    #ifndef STORAGE_H
    #define STORAGE_H

    #include <iostream>
    #include <fstream>
    #include <sstream>
    #include <string>
    #include <vector>
    #include <cstdio>
    #include <cstdlib>
    #include "settings.h"
    #include "Catalogue.h"
    #include "paymentModeList.h"
    #include "user.h"

    using namespace std;

    class Storage
    {
    private:
        //for userInformation.txt
        static const string KEYWORD_USERNAME;
        static const string KEYWORD_PASSWORD;
        //for settingsInfo.txt
        static const string KEYWORD_ACCTALERT;
        static const string KEYWORD_PAYMENTALERT;
        static const string KEYWORD_ITEMALERT;

        //for catalogueInfo.txt
        static const string KEYWORD_TITLENAME;
        static const string KEYWORD_CATLINES;
        static const string KEYWORD_ITEMNAME;
        static const string KEYWORD_PRICE;
        static const string KEYWORD_PAYMENTMODE;
        static const string KEYWORD_PAYMENTACCOUNT;
        static const string KEYWORD_CATEGORY;
        static const string KEYWORD_DATE;
        static const string KEYWORD_REMARKS;
        static const string KEYWORD_ONNOTIFICATIONS;
        static const string KEYWORD_PAIDSTATUS;
        static const string KEYWORD_DAYSBEFORE;

        //for paymentModeInfo.txt 


        //for accountInfo.txt

    public:
        Storage(); // empty constructor

        //reading from files
        vector<User*> getVectorUser();

        vector<Catalogue*> getCatalogueList(int);
        vector<Item*> getNotificationList(int);

        //not done
        vector<PaymentMode*> getPaymentModeList(int);
        Settings* getSettings(int);

        //writing to files
        void writeVectorUser(vector<User*>);
        void writeCatalogueList(vector<Catalogue*>, int);
        void writeNotificationList(vector<Item*>, int);
        void writeSettings(Settings*, int);

        //not done
        void writePaymentModeList(vector<PaymentMode*>, int);


        //checking & misc
        string getTaskInfo(string& task, string infoStart, string infoEnd);
        bool checkEmpty(ifstream &readFile);
    };

    #endif

//user.h ファイル

#pragma once
#ifndef _USER_H
#define _USER_H

#include <string>
#include <iostream>
#include "item.h"
#include "account.h"
#include "accountList.h"
#include "settings.h"
#include "paymentModeList.h"
#include "NotificationList.h"
#include "catalogueList.h"

using namespace std;

class User
{
private:
    string username;
    string password;
    int user_index;

    //implement sorting method under private

public:
    User(string, string, int);
    string GetUsername();
    string GetPassword();
    void makeSettings(string, string);
    Settings* makeSettings(string, string, bool, bool, bool);
    void enterSettings(Settings*, PaymentModeList*, AccountList*);
    void enterUser();
    void addExpenses(CatalogueList*, NotificationList*, PaymentModeList*, AccountList*);
    void deleteEdit(CatalogueList*, NotificationList*);
    void deleteCategory(string, CatalogueList*, NotificationList*);
    void retrieve(CatalogueList*, NotificationList*, PaymentModeList*, AccountList*);
    void viewSummary(Settings*, PaymentModeList*, AccountList*);

};

#endif

//user.cpp

#include "user.h"

using namespace std;

User :: User(string givenUser, string givenPassword, int index)
{
    username = givenUser;
    password = givenPassword;
    user_index = index;
}

string User :: GetUsername()
{
    return username;
}

string User :: GetPassword()
{
    return password;
}

//JIE ER PAYMENT AND ACCOUHNT ALERT
Settings* User :: makeSettings(string user, string pass, bool paymentAlert, bool accountAlert, bool itemAlert)
{
    Settings* mySettings = new Settings(user, pass, paymentAlert, accountAlert, itemAlert);

    return mySettings;
}

void User :: enterUser()
{
    //Once enter, user need to construct all the list and store data gotten from database to their respective location
    CatalogueList* myCatalogueList = new CatalogueList();

    NotificationList* myNotificationList = new NotificationList();

    Settings* mySettings = new Settings(username, password, true, true, true); //NEED TO REVISE

    PaymentModeList* myPayModeList = new PaymentModeList();

    AccountList* myAcctList = new AccountList();

    //user selects settings button
    enterSettings(mySettings, myPayModeList, myAcctList);

    //user select add button
    addExpenses(myCatalogueList, myNotificationList, myPayModeList, myAcctList);

    //user select summary
    viewSummary(mySettings,myPayModeList, myAcctList);

    //user select retrieve
    //retrieve(myCatalogueList);

    //user select delete/edit
    //deleteEdit(myCatalogueList);

    //user select viewReport

    //user gets notification

    //user gets alert

    //user chooses undo
    return;
}

void User :: addExpenses(CatalogueList* myCL, NotificationList* myNL, PaymentModeList* myPL, AccountList* myAL)
{
    string itemName;
    double price;
    string paymentMode;
    string account;
    string category;
    int date;
    string remarks;
    bool onNotification;
    bool paidStatus;
    int daysBefore;

    //assume user pass in correct details
    cin >> itemName >> price >> paymentMode >> account >> category >> date >> remarks >> onNotification >> paidStatus >> daysBefore;

    Item* itemToAdd = new Item(itemName, price, paymentMode, account, category, date, remarks, onNotification, paidStatus, daysBefore);

    //add to respective catalogue
    (*myCL).addItem(itemToAdd);

    //Create Account or PaymentMode if they are not existing
    //update paymentModeList and accountList
    Account* toAddAcct = new Account(account);
    PaymentMode* toAddPayMode = new PaymentMode(paymentMode);

    int indexAcct = (*myAL).findAcct(toAddAcct);
    if(indexAcct == -1)
        (*myAL).addAcct(toAddAcct);
    vector<Account*> tempVA = (*myAL).getVectorAcctList();
    (*tempVA[indexAcct]).addPayMode(toAddPayMode);

    //Create Account or PaymentMode if they are not existing
    //update paymentModeList and accountList
    int indexPM = (*myPL).findPaymentMode(toAddPayMode);
    if( indexPM == -1 )
        (*myPL).addPaymentMode(toAddPayMode);
    vector<PaymentMode*> tempVPM = (*myPL).getVectorPayModeList();
    (*tempVPM[indexPM]).addAcct(toAddAcct);

    //update balance at respective account
    //find respective account
    (*(tempVA[indexAcct])).updateAcctBal(price);

    //update balance at respective paymetmode
    //find respective paymentMode
    (*(tempVPM[indexPM])).updatePayModeBal(price);

    //add to notificationlist if necessary
    if( (onNotification == true) && ( (*myNL).findItem(itemToAdd) == -1) ) //NEED TO REVISE FIND FUNCTION: Remarks
        (*myNL).addItem(itemToAdd);

    return;
}

void User:: enterSettings(Settings* mySettings, PaymentModeList* myPL, AccountList* myAL)
{
    //user selects change username
    (*mySettings).changeUsername();

    //user selects change password
    (*mySettings).changePassword();

    //user selects to change Account Threshold
    string toFindAcct;
    cin >> toFindAcct;
    Account* tempA = new Account(toFindAcct);

    int indexA = (*myAL).findAcct(tempA);
    double newAcctThreshold;
    cin >> newAcctThreshold;
    vector<Account*> tempVA = (*myAL).getVectorAcctList();
    (*tempVA[indexA]).setAccountThreshold(newAcctThreshold);

    //user selects to change PaymentMode Threshold
    string toFindPM;
    cin >> toFindPM;
    PaymentMode* tempPM = new PaymentMode(toFindPM);
    int indexP = (*myPL).findPaymentMode(tempPM);
    double newPMThreshold;
    cin >> newPMThreshold;
    vector<PaymentMode*> tempVPM = (*myPL).getVectorPayModeList();
    (*tempVPM[indexP]).setPaymentModeThreshold(newPMThreshold);

    //CENTRAL SWITCH FOR BUDGET_ALERT
    //user selects change budgetAlert
    (*mySettings).toggleBudgetAlert();

    //CENTRAL SWITCH FOR NOTIFICATIONS
    //user selects change repeated items notifications
    (*mySettings).toggleRepeatedItemsNotification();

}


void User :: viewSummary(Settings* mySet, PaymentModeList* myPL, AccountList* myAL)
{
    //display username
    string userN = (*mySet).getUsername();
    cout << userN << endl;

    //display budget for account/paymentMode?

    //display total expenditure by account
    double sumAcctBal = (*myAL).getSumOfAllAcctBal();
    cout << sumAcctBal;

    //display total expenditure by paymentMode
    double sumPayModeBal = (*myPL).getSumOfAllPayModeBal();
    cout << sumPayModeBal << endl;

}

void User :: retrieve(CatalogueList* myCL, NotificationList* myNL, PaymentModeList* myPL, AccountList* myAL)
{
    //user input any of the following itemName, price, paymentMode, account, category, date
    //output the information for user to view
    vector< vector<Item*> > retrieveOutput;

    string itemName;
    string paymentMode;
    string account;
    string category;

    string date; //can be a range
    double price;//can be a range

    //Search by item name
    cin >> itemName;
    retrieveOutput = (*myCL).retrieveItem(itemName);

    //search by paymentMode
    cin >> paymentMode;

    vector<Catalogue*> catList = (*myCL).getVCatList();
    for(int i = 0; i < catList.size(); i++)
    {


        return;
    }
}

    /*void User :: deleteEdit(Expenses* myPriceList, Expenses* myCatalogueList)
    {
    string categoryToDelete;
    cin >> categoryToDelete;

    //user choose to delete by category
    deleteCategory(categoryToDelete, myPriceList, myCatalogueList);

    //*****user can choose to delete single or multiple items******////
    //call for retrieve function
    //user select items
    //search through every list to delete the items

    //*******user can choose to edit single item*******//
    //call for retrieve function
    //user select single item
    //search through every list to edit the particular item*/
    //return;
    //}

    /*
    void User :: deleteCategory(string categoryToDelete, Expenses* myPriceList, Expenses* myCatalogueList)
    {
    myCatalogueList -> deleteCat(categoryToDelete);
    myPriceList -> deleteCat(categoryToDelete);

    return;
    }
    */

//storage.cpp

#include "storage.h"

using namespace std;

//for userInformation.txt
const string Storage::KEYWORD_USERNAME = " -username ";
const string Storage::KEYWORD_PASSWORD = " -password ";
//for settings.txt
const string Storage::KEYWORD_ACCTALERT = " -acctAlert ";
const string Storage::KEYWORD_PAYMENTALERT = " -payModeAlert ";
const string Storage::KEYWORD_ITEMALERT = " -itemAlert ";

//for catalogueInfo.txt & notificationList.txt
const string Storage::KEYWORD_TITLENAME = " -titlename ";
const string Storage::KEYWORD_CATLINES = " -catlines ";
const string Storage::KEYWORD_ITEMNAME = " -itemname ";
const string Storage::KEYWORD_PRICE = " -price ";
const string Storage::KEYWORD_PAYMENTMODE = " -paymentmode ";
const string Storage::KEYWORD_PAYMENTACCOUNT = " -paymentaccount ";
const string Storage::KEYWORD_CATEGORY = " -category ";
const string Storage::KEYWORD_DATE = " -date ";
const string Storage::KEYWORD_REMARKS = " -remarks ";
const string Storage::KEYWORD_ONNOTIFICATIONS = " -onNotifications ";
const string Storage::KEYWORD_PAIDSTATUS = " -paidstatus ";
const string Storage::KEYWORD_DAYSBEFORE = " -daysbefore ";


Storage :: Storage()
{}

bool Storage :: checkEmpty(ifstream &readFile)
{
    if(readFile.is_open())
    {
        if(readFile.peek() == std::ifstream::traits_type::eof())
            return true;
        else 
            return false;
    }
    else
        return false;

}

string Storage::getTaskInfo(string& task, string infoStart, string infoEnd)
{
    int startPos = 0, endPos = 0;
    if(!infoStart.empty())
    {
        startPos = task.find(infoStart);
        if(startPos == string::npos)
            return "";
        startPos += infoStart.length();
    }
    endPos = task.rfind(infoEnd);
    if(endPos == string::npos)
        return task.substr(startPos).c_str();
    return task.substr(startPos, endPos-startPos).c_str();
}

vector<User*> Storage :: getVectorUser()
{
    vector<User*> userList;

    ifstream readFile("userInformation.txt"); 

    string oneUser;
    string username;
    string password;
    int index =0;

    while(!checkEmpty(readFile))
    {
        getline(readFile, oneUser);

        username = getTaskInfo(oneUser, "", KEYWORD_USERNAME);
        password = getTaskInfo(oneUser, "", KEYWORD_PASSWORD);

        User* toAdd = new User(username, password, index);

        userList.push_back(toAdd);
        index++;
    }

    return userList;
}

void Storage :: writeVectorUser(vector<User*> allMyUsers)
{
    ofstream storeFile;

    storeFile.open("userInformation.txt");

    for(int i=0; i<allMyUsers.size(); i++)
    {
        string username = allMyUsers[i] -> GetUsername();
        string password = allMyUsers[i] -> GetPassword();

        storeFile << username
            << KEYWORD_USERNAME
            << password
            << KEYWORD_PASSWORD
            << endl;
    }

    storeFile.close();

    return;
}

vector<Item*> Storage :: getNotificationList(int index)
{
    string finalName = "notificationInfo";
    string indexName;

    ostringstream convert;
    convert << index;

    indexName = convert.str() + ".txt";
    finalName = finalName + indexName;

    char* cstr_fileName = new char[finalName.length() + 1];
    strcpy(cstr_fileName, finalName.c_str());

    ifstream readFile(cstr_fileName);

    string oneItem;
    string itemname;
    string price;
    string paymentMode;
    string paymentAccount;
    string category;
    string date;
    string remarks;
    string onNotifications;
    string paidStatus;
    string daysBefore;

    vector<Item*> notifyList;

    while(!checkEmpty(readFile))
    {
        getline(readFile, oneItem);

        itemname = getTaskInfo(oneItem, "", KEYWORD_ITEMNAME);

        price = getTaskInfo(oneItem, "", KEYWORD_PRICE);
        double price_double = atof(price.c_str());

        paymentMode = getTaskInfo(oneItem, "", KEYWORD_PAYMENTMODE);
        paymentAccount = getTaskInfo(oneItem, "", KEYWORD_PAYMENTACCOUNT);
        category = getTaskInfo(oneItem, "", KEYWORD_CATEGORY);

        date = getTaskInfo(oneItem, "", KEYWORD_DATE);
        int date_int = atoi(date.c_str());

        remarks = getTaskInfo(oneItem, "", KEYWORD_REMARKS);

        onNotifications = getTaskInfo(oneItem, "", KEYWORD_ONNOTIFICATIONS);
        bool onNotify_bool;
        if(onNotifications == "true")
            onNotify_bool = true;
        else
            onNotify_bool = false;

        paidStatus = getTaskInfo(oneItem, "", KEYWORD_PAIDSTATUS);
        bool paidStatus_bool;
        if(paidStatus == "true")
            paidStatus_bool = true;
        else
            paidStatus_bool = false;

        daysBefore = getTaskInfo(oneItem, "", KEYWORD_DAYSBEFORE);
        int daysBefore_int = atoi(daysBefore.c_str());

        Item* itemAdd = new Item(itemname, price_double, paymentMode, paymentAccount, category, date_int, remarks, onNotify_bool, paidStatus_bool, daysBefore_int);

        notifyList.push_back(itemAdd);
    }

    return notifyList;
}

void Storage :: writeNotificationList(vector<Item*> notifyList, int index)
{
    string finalName = "notificationInfo";
    string indexName;

    ostringstream convert;
    convert << index;

    indexName = convert.str() + ".txt";
    finalName = finalName + indexName;

    char* cstr_fileName = new char[finalName.length() + 1];
    strcpy(cstr_fileName, finalName.c_str());

    ofstream storeFile;
    storeFile.open(cstr_fileName);

    for(int j=0; j<notifyList.size(); j++)
    {
        string itemname = notifyList[j] -> getName();

        double price = notifyList[j] -> getPrice();
        int priceInCents = price * 100;
        ostringstream convertPrice;
        convertPrice << priceInCents;
        string price_str = convertPrice.str();

        string paymentmode = notifyList[j] -> getPaymentMode(); 
        string paymentaccount = notifyList[j] -> getPaymentAccount();
        string category = notifyList[j] -> getCat();

        int date = notifyList[j] -> getDate();
        ostringstream convertDate;
        convertDate << date;
        string date_str = convertDate.str();

        string remarks = notifyList[j] -> getRemarks();

        bool onNotification = notifyList[j] -> getNotification();
        string onNotification_str;
        if(onNotification == true)
            onNotification_str = "true";
        else
            onNotification_str = "false";

        bool paidstatus = notifyList[j] -> getPaidStatus();
        string paidStatus_str;
        if(paidstatus == true)
            paidStatus_str = "true";
        else
            paidStatus_str = "false";

        int daysbefore = notifyList[j] -> getDaysBefore();
        ostringstream convertDaysBefore;
        convertDaysBefore << daysbefore;
        string daysbefore_str = convertDaysBefore.str();

        storeFile << itemname 
            << KEYWORD_ITEMNAME
            << price_str
            << KEYWORD_PRICE
            << paymentmode
            << KEYWORD_PAYMENTMODE
            << paymentaccount
            << KEYWORD_PAYMENTACCOUNT
            << category
            << KEYWORD_CATEGORY
            << date_str
            << KEYWORD_DATE
            << remarks
            << KEYWORD_REMARKS
            << onNotification_str
            << KEYWORD_ONNOTIFICATIONS
            << paidStatus_str
            << KEYWORD_PAIDSTATUS
            << daysbefore_str
            << KEYWORD_DAYSBEFORE
            << endl;
    }

    storeFile.close();

    return;
}

void Storage :: writeSettings(Settings* mySettings, int index)
{
    string finalName = "settingsInfo";
    string indexName;

    ostringstream convert;
    convert << index;

    indexName = convert.str() + ".txt";
    finalName = finalName + indexName;

    char* cstr_fileName = new char[finalName.length() + 1];
    strcpy(cstr_fileName, finalName.c_str());

    ofstream storeFile;
    storeFile.open(cstr_fileName);

    string username = mySettings -> getUsername;
    string password = mySettings -> getPassword;


    bool onAcctBudgetAlert = mySettings -> getOnAcctBudgetAlert;
    string onAcctBudgetAlert_str;
    if(onAcctBudgetAlert == true)
        onAcctBudgetAlert_str = "true";
    else
        onAcctBudgetAlert_str = "false";

    bool onPayModeBudgetAlert = mySettings -> getOnPayModeBudgetAlert;
    string onPayModeBudgetAlert_str;
    if(onPayModeBudgetAlert == true)
        onPayModeBudgetAlert_str = "true";
    else
        onPayModeBudgetAlert_str = "false";

    bool onRepeatedItemsNotification = mySettings -> getOnRepeatedItemsNotification;
    string onRepeatedItemsNotification_str;
    if(onRepeatedItemsNotification == true)
        onRepeatedItemsNotification_str = "true";
    else
        onRepeatedItemsNotification_str = "false";

    storeFile << username
        << KEYWORD_USERNAME
        << password
        << KEYWORD_PASSWORD
        << onAcctBudgetAlert_str
        << KEYWORD_ACCTALERT
        << onPayModeBudgetAlert_str
        << KEYWORD_PAYMENTALERT
        << onRepeatedItemsNotification_str
        << KEYWORD_ITEMALERT
        << endl;

    storeFile.close();

    return;
}

vector<Catalogue*> Storage :: getCatalogueList(int index)
{
    vector<Catalogue*> catList;

    string finalName = "catalogueInfo";
    string indexName;

    ostringstream convert;
    convert << index;

    indexName = convert.str() + ".txt";
    finalName = finalName + indexName;

    char* cstr_fileName = new char[finalName.length() + 1];
    strcpy(cstr_fileName, finalName.c_str());

    ifstream readFile(cstr_fileName);

    string oneCat;
    string titlename;
    string catlines;
    int catlines_int;

    string oneItem;
    string itemname;
    string price;
    string paymentMode;
    string paymentAccount;
    string category;
    string date;
    string remarks;
    string onNotifications;
    string paidStatus;
    string daysBefore;

    while(!checkEmpty(readFile))
    {
        getline(readFile, oneCat);
        titlename = getTaskInfo(oneCat, "", KEYWORD_TITLENAME);
        catlines = getTaskInfo(oneCat, "", KEYWORD_CATLINES);

        Catalogue* CatAdd = new Catalogue(titlename);
        catlines_int = atoi(catlines.c_str());

        for(int i=0; i<catlines_int; i++)
        {
            getline(readFile, oneItem);
            itemname = getTaskInfo(oneItem, "", KEYWORD_ITEMNAME);

            price = getTaskInfo(oneItem, "", KEYWORD_PRICE);
            double price_double = atof(price.c_str());

            paymentMode = getTaskInfo(oneItem, "", KEYWORD_PAYMENTMODE);
            paymentAccount = getTaskInfo(oneItem, "", KEYWORD_PAYMENTACCOUNT);
            category = getTaskInfo(oneItem, "", KEYWORD_CATEGORY);

            date = getTaskInfo(oneItem, "", KEYWORD_DATE);
            int date_int = atoi(date.c_str());

            remarks = getTaskInfo(oneItem, "", KEYWORD_REMARKS);

            onNotifications = getTaskInfo(oneItem, "", KEYWORD_ONNOTIFICATIONS);
            bool onNotify_bool;
            if(onNotifications == "true")
                onNotify_bool = true;
            else
                onNotify_bool = false;

            paidStatus = getTaskInfo(oneItem, "", KEYWORD_PAIDSTATUS);
            bool paidStatus_bool;
            if(paidStatus == "true")
                paidStatus_bool = true;
            else
                paidStatus_bool = false;

            daysBefore = getTaskInfo(oneItem, "", KEYWORD_DAYSBEFORE);
            int daysBefore_int = atoi(daysBefore.c_str());

            Item* itemAdd = new Item(itemname, price_double, paymentMode, paymentAccount, category, date_int, remarks, onNotify_bool, paidStatus_bool, daysBefore_int);
            CatAdd -> pushItem(itemAdd);
        }
        catList.push_back(CatAdd);
    }

    return catList;
}

void Storage :: writeCatalogueList(vector<Catalogue*> catList, int index)
{
    string finalName = "catalogueInfo";
    string indexName;

    ostringstream convert;
    convert << index;

    indexName = convert.str() + ".txt";
    finalName = finalName + indexName;

    char* cstr_fileName = new char[finalName.length() + 1];
    strcpy(cstr_fileName, finalName.c_str());

    ofstream storeFile;
    storeFile.open(cstr_fileName);

    for(int i=0; i<catList.size(); i++)
    {
        vector<Item*> itemCat = catList[i] -> getVCatItems();
        string titleName = catList[i] -> getCatName();

        int catLines = itemCat.size();
        ostringstream convertCatLines;
        convertCatLines << catLines;

        string catLines_str = convertCatLines.str();

        storeFile << titleName
            << KEYWORD_TITLENAME
            << catLines_str
            << KEYWORD_CATLINES
            << endl;

        for(int j=0; j<itemCat.size(); j++)
        {
            string itemname = itemCat[j] -> getName();

            double price = itemCat[j] -> getPrice();
            int priceInCents = price * 100;
            ostringstream convertPrice;
            convertPrice << priceInCents;
            string price_str = convertPrice.str();

            string paymentmode = itemCat[j] -> getPaymentMode(); 
            string paymentaccount = itemCat[j] -> getPaymentAccount();
            string category = itemCat[j] -> getCat();

            int date = itemCat[j] -> getDate();
            ostringstream convertDate;
            convertDate << date;
            string date_str = convertDate.str();

            string remarks = itemCat[j] -> getRemarks();

            bool onNotification = itemCat[j] -> getNotification();
            string onNotification_str;
            if(onNotification == true)
                onNotification_str = "true";
            else
                onNotification_str = "false";

            bool paidstatus = itemCat[j] -> getPaidStatus();
            string paidStatus_str;
            if(paidstatus == true)
                paidStatus_str = "true";
            else
                paidStatus_str = "false";

            int daysbefore = itemCat[j] -> getDaysBefore();
            ostringstream convertDaysBefore;
            convertDaysBefore << daysbefore;
            string daysbefore_str = convertDaysBefore.str();

            storeFile << itemname 
                << KEYWORD_ITEMNAME
                << price_str
                << KEYWORD_PRICE
                << paymentmode
                << KEYWORD_PAYMENTMODE
                << paymentaccount
                << KEYWORD_PAYMENTACCOUNT
                << category
                << KEYWORD_CATEGORY
                << date_str
                << KEYWORD_DATE
                << remarks
                << KEYWORD_REMARKS
                << onNotification_str
                << KEYWORD_ONNOTIFICATIONS
                << paidStatus_str
                << KEYWORD_PAIDSTATUS
                << daysbefore_str
                << KEYWORD_DAYSBEFORE
                << endl;
        }
    }

    storeFile.close();

    return;
}
4

1 に答える 1

4

これらの問題に直面したときに私が取るいくつかのステップは次のとおりです。

  • error C2653: 'User' : is not a class or namespace nameは、ユーザー定義タイプの1つです。このエラーが発生した行をチェックして、問題を特定できるかどうかを確認します(ちなみに、4つのファイルを提供してどこかにあると言う代わりに、エラーが発生した行を教えていただければ、本当に助かりました。 !)。そうでない場合は、...
  • ...おそらく#include/namespaceの悪夢に直面しています。
  • を取り除きusing namespace std;ます。一時的な解決策として、必要なものをインポートすることもできますがusing std::string; 、持続可能な長期的なアプローチについては、ハーブサッターの記事を読んでください:http ://www.gotw.ca/gotw/053.htm
  • ファイルから不要なものをすべて削除し#includeます。実際に必要なものだけを含めてください。
  • 手動インクルードガードの組み合わせは#pragma once私には奇妙に思えます。問題が発生することはないと思いますが、どちらか一方を使い続けます。
  • stadfx.hインクルードから削除し、プロジェクトオプションでプリコンパイル済みヘッダーを無効にします。プロジェクトを再構築します。(プリコンパイル済みヘッダーが悪いと言っているわけではありませんが、問題が修正されるまでそれらを削除します。)
于 2013-03-10T13:10:41.993 に答える