ошибка: нет соответствия для оператора ==

Я получаю сообщение об ошибке для нескольких областей моих трех файлов. (У меня также есть проблемы с моим конструктором по умолчанию, поэтому он закомментирован. Но сначала я хочу решить эту проблему)

// ComputerType.h
//************************************************************************
// This file gives the specification of a ComputerType abstract data type
//************************************************************************
//  #ifndef COMPUTERTYPE_H
//  #define COMPUTERTYPE_H

#include<fstream>
#include<iostream>
#include<iomanip>
#include<string>
#include<cctype>

using namespace std;

class ComputerType
{
public:

//     ComputerType();
//******************************************************************************
// Default Constructor.
// Purpose: Initialize the data by default value.
// Input: None.
// Precondition: None.

ComputerType(int initID, string initPrcsr, string initRAMsize, string initDiskSize, string initCompType, float initcost, string initLab);
//*******************************************************************************
// Purpose: To initialize the data.
// Input: InitID, initPrcsr, initRAMSize, initDiskSize, initCompType, initCost, initLab.
// Precondition: initID, initPrcsr, initRAMSize, initDiskSize, initCompType, initCost, initLab have values.
// Output: None.
// PostCondition: Class object is constructed && Computer is set to incoming parameters.
// Note: None.
//********************************************************************************

void SetComputer(int ID, string processorDesc, string RAM, string disk, string type, float compCost, string lab);
//*******************************************************************************
// Purpose: To set object data to value for use.
// Input: ID, processorDesc, RAM, disk, type, compCost, lab.
// Precondition: ID, processorDesc, RAM, disk, type, compCost, lab have values.
// Output: None.
// PostCondition: Object values are set to incoming parameters.
// Note: None.
//*******************************************************************************
void SetComputerType(string& computerTypeConvert);
//*******************************************************************************
// Purpose: To set private data computerType to value for use.
// Input: computerTypeConvert.
// Precondition: typeConvert has value.
// Output: None.
// PostCondition: Object value computerType is set to incoming parameters.
// Note: None.
//*******************************************************************************

string Processorls();
//******************************************************************************
//Purpose: Function Processorls returns the computer processor.
//Input: None.
//Pre: Object exists.
//Output: string.
//Post: processor is returned.
//Note: None.
//******************************************************************************

string Locationls();
//******************************************************************************
//Purpose: Returns the computer.s lab location.
//Input: None.
//Pre: Object exists.
//Output: string.
//Post: string labLocation is returned.
//Note:  None
//******************************************************************************

void ReadRd(ifstream& inFile);
//******************************************************************************
//Purpose: Function reads idNumber, processor, RAMSize, DiskSize, computerType,
// cost, and labLocation from file, and assigns them to object variables.
//Input: inFile.
//Pre: inFile file open and OK.
//Output: None.
//Post: idNumber, processor, RAMSize, DiskSize, computerType, cost, and labLocation are stored from //file into object.
//Note:  None.
void PrintRd(ofstream& outFile);
//******************************************************************************
//Purpose: Function PrintRd prints idNumber, processor, RAMSize, DiskSize, computerType, cost and //labLocation to a file.
//Input: outFile.
//Pre: OutFile open and ok.
//Output: float, string.
//Post: function prints data to outFile.
//Note:  none.
//*****************************************************************************
private:

int idNumber;
string processor;
string RAMSize;
string DiskSize;
string computerType;
float cost;
string labLocation;
};
//*****************************************************************************************

файл реализации:

 //ComputerType.cxx
//*********************************************************
// This file implements the ComputerType member functions
//*********************************************************
#include "ComputerType.h"#include <iostream>
#include <iomanip>
#include <fstream>
#include <cctype>
#include <string>
using namespace std;

// Private members of class:
// int idNumber;
// string processor;
// string RAMSize;
// string DiskSize;
// string computerType;
// float cost;
// string labLocation

//  ComputerType::ComputerType()
//******************************************************************************
// Default Constructor.
// Purpose: Initialize the data by default value.
// Precondition: None.
// Output: None.
// Postcondition: idNumber == -5555 && processor == NONE & RAMSize == Zero && DiskSize == Zero &&
// computerType == NONE && cost == -777.00 && labLocation = NONE.
// Note: None.
//******************************************************************************
// {
// idNumber = -5555;
// processor = "NONE";
// RAMSize = "Zero";
// DiskSize = "Zero";
// computerType = "NONE";
// cost = -777.00;
// labLocation = "NONE";
// }
//***********************************************************************************8

ComputerType::ComputerType(int initID, string initPrcsr, string initRAMSize, string initDiskSize, string initCompType, float initCost, string initLa$
//*******************************************************************************
// Purpose: To initialize the data.
// Input: InitID, initPrcsr, initRAMSize, initDiskSize, initCompType, initCost, initLab.
// Precondition: initID, initPrcsr, initRAMSize, initDiskSize, initCompType, initCost, initLab  have values.
// Output: None.
// PostCondition: Class object is constructed && private data is set to incoming parameters.
// Note: None.
{
idNumber = initID;
processor = initPrcsr;
RAMSize = initRAMSize;
DiskSize = initDiskSize;
computerType = initCompType;
cost = initCost;
labLocation = initLab;

}
//********************************************************************************

void ComputerType::SetComputer(int ID, string processorDesc, string RAM, string disk, string type, float compCost, string lab)
//*******************************************************************************
// Purpose: To set object data to value for use.
// Input: ID, processorDesc, RAM, disk, type, compCost.
// Precondition: ID, processorDesc, RAM, disk, type, compCost, lab have values.
// Output: None.
// PostCondition: Object values are set to incoming parameters.
// Note: None.
//*******************************************************************************
{
idNumber = ID;
processor = processorDesc;
RAMSize = RAM;
DiskSize = disk;
computerType = type;
cost = compCost;
labLocation = lab;
}
//********************************************************************************

void ComputerType::SetComputerType(string& computerTypeConvert)
//*******************************************************************************
// Purpose: To set private data computerType to value for use.
// Input: typeconvert.
// Precondition: typeConvert has value.
// Output: None.
{
if(computerType == 'd' || computerType == 'D' || computerType == "desktop" || computerType == "Desktop" || computerType == "DESKTOP")
{
computerTypeConvert = "Desktop";
}
if(computerType == 'l' || computerType == 'L' || computerType == "laptop" || computerType == "Laptop" || computerType == "LAPTOP")
{
computerTypeConvert = "Laptop";
}

else
computerTypeConvert = "Invalid input value";

computerType = computerTypeConvert;
}
//*********************************************************************

string ComputerType::Processorls()
//******************************************************************************
//Purpose: Function Processorls returns the computer processor.
//Input: None.
//Pre: Object exists.
//Output: string.
{
return processor;
}
//******************************************************************************

string ComputerType::Locationls()
//******************************************************************************
//Purpose: Returns the computer.s lab location.
//Input: None.
//Pre: Object exists.
//Post: string labLocation is returned.
//Note:  None.
//******************************************************************************
{
return labLocation;
}
//******************************************************************************

void ComputerType::ReadRd(ifstream& inFile)
//******************************************************************************
//Purpose: Function reads idNumber, processor, RAMSize, DiskSize, computerType, cost, and //labLocation from file, and assigns them to object variab$
//Input: inFile.
//Pre: inFile file open and OK.
//Output: None.
//Post: idNumber, processor, RAMSize, DiskSize, computerType, cost, and labLocation are stored from //file into object.
//Note:  None.
//******************************************************************************

{
int RAMSizeInt;
string RAMSizeString;
int DiskSizeString;
string DiskSizeInt;

inFile >> idNumber >> processor >> RAMSizeInt >> RAMSizeString >> DiskSizeInt >> DiskSizeString >> computerType >> cost >> labLocation;
RAMSize = RAMSizeInt & RAMSizeString;
DiskSize = DiskSizeInt & DiskSizeString;
}
//******************************************************************************

void ComputerType::PrintRd(ofstream& outFile)
//******************************************************************************
//Purpose: Function PrintRd prints idNumber, processor, RAMSize, DiskSize, computerType, cost and //labLocation to a file.
//Input: outFile.
//Pre: OutFile open and ok.
//Output: float, string.
//Post: function prints data to outFile.
//Note:  none.
{
outFile << setw(14) << idNumber << setw(25) << processor << setw(15) << RAMSize  << setw(18) << DiskSize;
outFile << setw(19) << computerType << setw(9) << cost << setw(7) << labLocation << endl;
}
//*****************************************************************************

код клиента:

 #include "ComputerType.h"#include <iostream>
#include <fstream>
#include <iomanip>
#include <cctype>
#include <string>
using namespace std;

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

ComputerType rd;
string computerTypeConvert;

computertypeConvert = "type";// Check input file
// if(inFile)
// {
// if(outFile)
// {
// while(inFile)
// {
// function calls for reading and assigning values to private data
rd.ReadRd(inFile);
rd.SetComputerType(computerTypeConvert);

// Print to outFile
outFile << setw(14) << "ID Number" << setw(25) <<  "P R 0 C E S S O R" << setw(15) << "RAM     Size";
outFile << setw(18) << "Disk Size" << setw(19) << "Computer Type" << setw(9) << "Cost";
outFile << setw(7) << "Location" << endl;
rd.PrintRd(outFile);
//  }
return 0;
}

Вот мой список ошибок:

 cxx -o runComputerType.out ComputerType.cxx runComputerType.cxx
ComputerType.cxx: In member function âvoid ComputerType::SetComputerType(std::string&)â:
ComputerType.cxx:95: error: no match for âoperator==â in â((ComputerType*)this)->ComputerType::computerType == 'd'â
ComputerType.cxx:95: error: no match for âoperator==â in â((ComputerType*)this)->ComputerType::computerType == 'D'â
ComputerType.cxx:99: error: no match for âoperator==â in â((ComputerType*)this)->ComputerType::computerType == 'l'â
ComputerType.cxx:99: error: no match for âoperator==â in â((ComputerType*)this)->ComputerType::computerType == 'L'â
ComputerType.cxx: In member function âvoid ComputerType::ReadRd(std::ifstream&)â:
ComputerType.cxx:156: error: no match for âoperator&â in âRAMSizeInt & RAMSizeStringâ
/usr/include/c++/4.3/bits/ios_base.h:81: note: candidates are: std::_Ios_Fmtflags std::operator&(std::_Ios_Fmtflags, std::_Ios_Fmtflags)
/usr/include/c++/4.3/bits/ios_base.h:121: note:                 std::_Ios_Openmode std::operator&(std::_Ios_Openmode, std::_Ios_Openmode)
/usr/include/c++/4.3/bits/ios_base.h:159: note:                 std::_Ios_Iostate std::operator&(std::_Ios_Iostate, std::_Ios_Iostate)
ComputerType.cxx:157: error: no match for âoperator&â in âDiskSizeInt & DiskSizeStringâ
/usr/include/c++/4.3/bits/ios_base.h:81: note: candidates are: std::_Ios_Fmtflags std::operator&(std::_Ios_Fmtflags, std::_Ios_Fmtflags)
/usr/include/c++/4.3/bits/ios_base.h:121: note:                 std::_Ios_Openmode std::operator&(std::_Ios_Openmode, std::_Ios_Openmode)
/usr/include/c++/4.3/bits/ios_base.h:159: note:                 std::_Ios_Iostate std::operator&(std::_Ios_Iostate, std::_Ios_Iostate)
runComputerType.cxx: In function âint main()â:
runComputerType.cxx:35: error: no matching function for call to âComputerType::ComputerType()â
ComputerType.h:32: note: candidates are: ComputerType::ComputerType(int, std::string, std::string, std::string, std::string, float, std::string)
ComputerType.h:17: note:                 ComputerType::ComputerType(const ComputerType&)

-1

Решение

поскольку computerType это string, его operator==() объявляется для сравнения с другой строкой (заключена в двойную кавычку "), а не другой символ (заключенный в одинарную кавычку) ').

Таким образом,

computerType == 'd' || computerType == 'D'

следует переписать как

computerType == "d" || computerType == "D"
2

Другие решения


По вопросам рекламы [email protected]