У меня ошибка, которая говорит:
error: no match for ‘operator>>’ (operand types are ‘std::ifstream {aka std::basic_ifstream<char>}’ and ‘const int*’)
inputStream >> getZipcode();
Когда я включил #include <iostream>
и #include <fstream>
, и я не использую функцию перегрузки оператора, поэтому я не понимаю проблему. У меня также есть записка, в которой говорится следующее:
In file included from /usr/include/c++/7/iostream:40:0,
from Strings.h:5,
from Sensor.h:5,
from Car.h:4,
from Agency.h:4,
from Agency.cpp:2:
/usr/include/c++/7/istream:168:7: note: candidate: std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(bool&) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>] <near match>
operator>>(bool& __n)
^~~~~~~~
/usr/include/c++/7/istream:168:7: note: conversion of argument 1 would be ill-formed:
Agency.cpp:79:29: error: cannot bind non-const lvalue reference of type ‘bool&’ to an rvalue of type ‘bool’
inputStream >> getZipcode();
Что эта функция предназначена для данных Агентства по прокату автомобилей, включая название агентства и почтовый индекс. А затем прочитайте «инвентарь» или данные об автомобилях, которые Агентство имеет, такие как: марка, модель, владелец, год, датчик и базовая цена.
Вот мой заголовочный файл агентства и моя реализация для getZipcode () в отдельном исходном файле:
class Agency {
private:
char m_name[256];
int m_zipcode[5];
Car m_inventory[5];
public:
Agency();
//~Agency();
const char *getName();
const int *getZipcode();
void setName(const char *name);
void setZipcode(const int *zipcode);
const Agency &operator[](const int index);
void readData();
void printData();
void printAvailableCars();
};
const int *Agency::getZipcode() {
return m_zipcode;
}
void Agency::readData() {
ifstream inputStream;
char inputfile[50];
const int *tempZip = getZipcode();
Car *tempInvt = m_inventory;
char tempMake[256], tempModel[256], tempOwner[256], tempType[256];
int tempYear;
float tempBaseprice;
bool tempAvailable;
Sensor tempSensor[3];
Sensor *sensorPtr = tempSensor;
cout << "Enter file name: ";
cin >> inputfile;
inputStream.open(inputfile);
if (inputStream.is_open()) {
inputStream >> m_name;
for (int i = 0; i < 5; i++) {
inputStream >> getZipcode();
tempZip++;
}
for (int j = 0; j < 5; j++) {
inputStream >> tempYear;
inputStream >> tempMake;
inputStream >> tempModel;
inputStream >> tempBaseprice;
tempInvt->setYear(tempYear);
tempInvt->setMake(tempMake);
tempInvt->setModel(tempModel);
tempInvt->setBaseprice(tempBaseprice);
inputStream.get();
while (inputStream.peek() != '}') {
inputStream >> tempType;
sensorPtr->setType(tempType);
if (myStringCompare(tempType, "gps") == 0) {
sensorPtr->setExtracost(5.0);
sensorPtr->getGps_cnt() + 1;
}
else if (myStringCompare(tempType, "camera") == 0) {
sensorPtr->setExtracost(10.0);
sensorPtr->getCamera_cnt() + 1;
}
else if (myStringCompare(tempType, "lidar") == 0) {
sensorPtr->setExtracost(15.0);
sensorPtr->getLidar_cnt() + 1;
}
else if (myStringCompare(tempType, "radar") == 0) {
sensorPtr->setExtracost(20.0);
sensorPtr->getRadar_cnt() + 1;
}
else {
sensorPtr->setExtracost(0.0);
}
sensorPtr++;
}
inputStream.get();
tempInvt->updatePrice();
inputStream >> tempAvailable;
inputStream >> tempOwner;
tempInvt->setAvailable(tempAvailable);
tempInvt->setOwner(tempOwner);
}
tempInvt++;
}
}
[1]: https://i.stack.imgur.com/G2XNv.png