세 가지 다른 개체 유형 (UnsortedType, CompData, ItemType)에 대해 .h 파일을 포함하는 클라이언트 코드 파일이 있습니다. 또한 UnsortedType.h에는 #include ItemType.h가 있습니다.정의되지 않은 오류 및 재정의 된 오류
클라이언트 코드에 대한 헤더 가드와 UnsortedType 파일 내에 동일한 가드를 포함시킨 후 ObjectFromFile 함수에 대한 모호한 컴파일 오류 만 남았습니다. 함수를 주석 처리 할 때 UnsortedType 및 ItemType 데이터에 대해 여러 개의 정의되지 않은 오류가 발생하므로 다른 작업이 진행되고 있다는 느낌을받습니다.
이 프로그램은 inFile 개체 ItemType 항목에서 데이터를 가져 와서 특정 형식으로 변환하고 유효성을 검사 한 다음데이터의 특정 측면에 따라 UnsortedType의 특정 목록에 데이터를 추가합니다. (유효한, 유효하지 않은, RAM 및 디스크 크기, 노트북 데이터, 데스크톱 데이터).
#include <iostream>
#include <fstream>
#include <iomanip>
#include <string>
#include "UnsortedType.h"
#include "CompData.h"
#ifndef ITEM_TYPE_H
#define ITEM_TYPE_H
#include "ItemType.h"
using namespace std;
UnsortedType ObjectFromFile(ifstream& inFile, UnsortedType& list, CompDataType Data, ItemType& item, UnsortedType& laptopList, UnsortedType& desktopList, UnsortedTyp$
void CompareRAMAndDisk(ItemType item, UnsortedType& RAMList);
void DoCommandP(ItemType& item, UnsortedType list, CompDataType Data, ofstream& outFile);
void DoCommandK(ofstream& outFile, UnsortedType& desktopList);
void DoCommandL(ofstream& outFile, UnsortedType& laptopList);
void DoCommandM(ofstream& outFile, UnsortedType RAMList);
void DoCommandD(UnsortedType& list, ItemType item);
UnsortedType DoCommandA(ifstream& inFile, UnsortedType& list, CompDataType Data, ItemType& item, UnsortedType& laptopList, UnsortedType& desktopList);
void PrintHeader(ofstream& outFile);
int main()
{
// declare and open file streams
ifstream inFile;
ofstream outFile;
inFile.open("in.data");
outFile.open("out.data");
outFile.setf(ios::fixed);
outFile.precision(2);
ItemType item;
UnsortedType list;
UnsortedType laptopList;
UnsortedType desktopList;
UnsortedType RAMList;
UnsortedType invalidList;
CompDataType Data;
char command;
int length;
bool full;
bool found;
// Check input file
if(inFile.fail() || outFile.fail())
{
cout << "File Failure" << endl;
return 1;
}
list.MakeEmpty();
outFile << "*~< Lab Report >~" << endl;
while(inFile)
{
inFile >> command;
if(command == 'P')
{
invalidList.PrintList(outFile);
outFile << endl;
length = list.LengthIs();
if(length == 0)
{
outFile << "~->List is empty! No print!" << endl;
}
}
else
{
PrintHeader(outFile);
DoCommandP(item, list, Data, outFile);
}
if(command = 'A')
{
full = list.IsFull();
if(full)
outFile << "~->List is full! No add!" << endl;
else
invalidList = DoCommandA(inFile, list, Data, item, laptopList, desktopList);
}
if(command == 'D')
{
length = list.LengthIs();
if(length == 0)
outFile << "~->List is empty! No delete!" << endl;
else
DoCommandD(list, item);
}
if(command == 'L')
{
DoCommandL(outFile, laptopList);
}
if(command == 'K')
{
DoCommandK(outFile, desktopList);
}
if(command == 'M')
{
DoCommandM(outFile, RAMList);
}
}
outFile << "*<end>*" << endl;
inFile.close();
outFile.close();
return 0;
}
#endif
//*****************************************************************************************************************************
void DoCommandP(ItemType& item, UnsortedType list, CompDataType Data, ofstream& outFile)
{
int length;
length = list.LengthIs();
list.PrintList(outFile);
outFile << endl;
if(Data.numDesktop > 0)
outFile << "Average cost of Desktops: $" << item.avgCostOfDesktop() << endl;
else
outFile << "Average cost of Desktops: " << "No Desktops" << endl;
if(Data.numLaptop > 0)
outFile << "Average cost of Laptops: $" << item.avgCostOfLaptop() << endl;
else
outFile << "Average cost of Laptops: " << "No Laptops" << endl;
if(Data.numDesktop > 0 || Data.numLaptop > 0)
{
outFile << "High Price: $" << item.HighPriceComputer() << endl;
outFile << "Low Price: $" << item.LowPriceComputer() << endl;
}
else
{
outFile << "High Price: " << "No valid computer data" << endl;
outFile << "LowPrice: " << "No valid computer data" << endl;
}
outFile << endl;
outFile << "SE135: %" << (Data.count135/length);
outFile << "SE136: %" << (Data.count136/length);
outFile << "SE145: %" << (Data.count145/length);
outFile << endl;
outFile << "*** " << Data.invalidCount << " Record";
outFile << endl;
}
//**********************************************************************************************
UnsortedType ObjectFromFile(ifstream& inFile, UnsortedType& list, CompDataType Data, ItemType& item, UnsortedType& laptopList, UnsortedType& desktopList, UnsortedTyp$
{
UnsortedType invalidList;
Data.computerTypeConvert = "l";
Data.invalidCount = 0;
Data.numDesktop = 0;
Data.numLaptop = 0;
Data.count135 = 0;
Data.count136 = 0;
Data.count145 = 0;
item.ReadRd(inFile);
while(inFile)
{
// function calls for reading and assigning values to private data
Data.valid = item.ValidData();
item.SetComputerType(Data.computerTypeConvert);
// Check data validity
if(Data.valid)
{
Data.computerType = item.ComputerTypels();
Data.location = item.Locationls();
if(Data.computerType == "l")
{
item.FindAvgCostLaptop();
Data.numLaptop = Data.numLaptop + item.NumberComputerls();
laptopList.InsertItem(item);
}
if(Data.computerType == "d")
{
item.FindAvgCostDesktop();
Data.numDesktop = Data.numDesktop + item.NumberComputerls();
desktopList.InsertItem(item);
}
if(Data.numDesktop + Data.numLaptop > 0)
{
item.FindLowPriceComputer();
item.FindHighPriceComputer();
}
if(Data.location == "SE135")
Data.count135++;
if(Data.location == "SE136")
Data.count136++;
if(Data.location == "SE145")
Data.count145++;
CompareRAMAndDisk(item, RAMList);
list.InsertItem(item);
item.ReadRd(inFile);
}
else
{
Data.invalidCount++;
invalidList.InsertItem(item);
}
}
return invalidList;
}
//*********************************************************************************************
void PrintHeader(ofstream& outFile)
{
const string DASH8 = "--------";
outFile << "*~< Lab Report >~*" << endl << endl;
outFile << left << setw(16) << "IdNumber" << setw(24) << "P R 0 C E S S O R" << setw(17) << "RAM Size";
outFile << left << setw(15) << "Disk Size" << setw(17) << "Computer Type" << setw(12) << "C o s t";
outFile << left << setw(9) << "Location" << endl;
outFile << left << setw(16) << DASH8 << setw(24) << "-----------------" << setw(17) << DASH8;
outFile << left << setw(15) << "---------" << setw(17) << "-------------" << setw(12) << DASH8;
outFile << left << setw(9) << DASH8 << endl;
}
//**************************************************************************************************************
UnsortedType DoCommandA(ifstream& inFile, UnsortedType& list, CompDataType Data, ItemType& item, UnsortedType& RAMList, UnsortedType& laptopList, UnsortedType& deskt$
{
UnsortedType invalidList;
invalidList = ObjectFromFile(inFile, list, Data, item, laptopList, desktopList, RAMList);
return invalidList;
}
//*******************************************************************************************
void DoCommandD(UnsortedType& list, ItemType item)
{
list.DeleteItem(item);
}
//******************************************************************************************
void DoCommandK(ofstream& outFile, UnsortedType& desktopList)
{
desktopList.PrintList(outFile);
}
//******************************************************************************************
void DoCommandL(ofstream& outFile, UnsortedType& laptopList)
{
PrintHeader(outFile);
laptopList.PrintList(outFile);
}
//******************************************************************************************
void DoCommandM(ofstream& outFile, UnsortedType RAMList)
{
bool ramData;
PrintHeader(outFile);
RAMList.PrintList(outFile);
}
//******************************************************************************************
void CompareRAMAndDisk(ItemType item, UnsortedType RAMList)
{
string RAMInt;
string DiskInt;
string RAM;
string Disk;
int index;
Disk = item.Diskls();
RAM = item.RAMls();
index = Disk.find(' ');
DiskInt = Disk.substr(0, (index - 1));
Disk = Disk.substr(index);
index = RAM.find(' ');
RAMInt = RAM.substr(0, (index - 1));
RAM = RAM.substr(index);
if((RAMInt >= "16" && RAM == "GB") && (DiskInt == "2" && Disk == "TB"))
RAMList.InsertItem(item);
}
//*****************************************************************************************
어떤 도움을 환영합니다 :
runItemType.cxx: In function âUnsortedType ObjectFromFile(std::ifstream&, UnsortedType&, CompDataType, ItemType&, UnsortedType&, UnsortedType&, UnsortedType&)â:
runItemType.cxx:215: error: âCompareRAMAndDiskâ was not declared in this scope
가 여기 내 클라이언트 코드 :
여기 내 오류입니다! (! 당신이 논리의 오류를 볼 경우에도, 나는 일반적으로 내 자신에 그들을 해결할 수 알려 주시기 바랍니다, 그러나 빨리 나는 더 나은이 완료!)
SO는 실제로 디버깅 서비스가 아닙니다. –