Я работаю над проектом, в котором нам вообще не разрешено использовать библиотеку <string>
- мы можем работать только со строками в качестве символьных указателей, и мы должны написать свои собственные функции для них (strcpy, strlen,так далее).Я пытаюсь создать класс RentalCar со следующим заголовочным файлом:
#ifndef RENTALCAR_H
#define RENTALCAR_H
class RentalCar {
public:
RentalCar();
RentalCar(char* make, char* model);
char* getMake() const;
char* getModel() const;
void setMake(char* make = "");
void setModel(char* model = "");
private:
char m_make[256];
char m_model[256];
};
#endif
Мой исходный файл содержит следующее:
#include <iostream>
#include "RentalCar.h"
using namespace std;
RentalCar::RentalCar() {
setYear();
setMake();
setModel();
setPrice();
setAvailable();
}
RentalCar::RentalCar(int year, char* make, char* model, float price,
bool available) {
setYear(year);
setMake(make);
setModel(model);
setPrice(price);
setAvailable(available);
}
char* RentalCar::getMake() const{
return m_make;
}
char* RentalCar::getModel() const{
return m_model;
}
void RentalCar::setMake(char* make) {
myStringCopy(m_make, make);
}
void RentalCar::setModel(char* model) {
myStringCopy(m_model, model);
}
char* myStringCopy(char* destination, const char* source) {
int index = 0;
while(*(source + index) != '\0') {
*(destination + index) = *(source + index);
index++;
}
*(destination + index) = '\0';
return destination;
}
Моя проблема в том, что я получаю следующееошибка в моих методах getMake и getModel:
cannot initialize return object of type 'char *'
with an lvalue of type 'char const[256]'
Я не уверен, как создать строки по умолчанию, не делая их литералами - вот почему я думаю, что я получаю эту ошибку.
Мой другой вопрос заключается в том, что для установки строк в моих функциях setMake () и setModel () мне нужно использовать функцию myStringCopy (), поэтому я должен включить ее в качестве функции в этом классе,или есть способ получить к нему доступ иначе?Мне также нужно использовать его в моем текущем файле проекта, и его необходимо включать туда и в RentalCar.cpp *
Стоит отметить, что мы не можем работать со строками, используя индексацию массива в любомспособ - кроме как для инициализации новой строки.
Любая помощь будет оценена!Спасибо!