unarios sobrecargar sobrecarga relacionales poo operadores operador logicos c++ compiler-errors operator-keyword no-match

c++ - sobrecargar - error: no hay coincidencia para el operador==



sobrecarga del operador<< c++ (1)

Recibo un error por varias áreas de mis tres archivos. (También estoy teniendo problemas con mi constructor predeterminado, por lo que está comentado. Pero primero quiero resolver este problema)

// 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; }; //*****************************************************************************************

archivo de implementación:

//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; } //*****************************************************************************

codigo del cliente:

#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; }

Aquí está mi lista de errores:

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


Como computerType es una string , su operator==() se declara para comparar con otra cadena (encerrada entre comillas dobles " ), no con otro carácter (encerrado entre comillas simples).

Así,

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

debe ser reescrito como

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