Ошибка. В классе тип аргумента string распознается при передаче как char.
Добавлено: 18 мар 2010, 15:39
Есть два класса:
- Person, в котором хранится информация о владельце:
- Vehicle - базовый класс, в котром хранится инфо об авто:
Функция set_person:
При вызове:
Ошибка выглядит так:
Как можно обойти эту проблему (интерфейс класса Person никак дополнять нельзя)?
- Person, в котором хранится информация о владельце:
Код: Выделить всё
#ifndef PERSON_H
#define PERSON_H
#include <string>
using namespace std;
class Person
{
public:
Person();
Person(string the_name);
Person(const Person& the_object);
string get_name() const;
Person& operator =(const Person& rt_side);
friend istream& operator >>(istream& in_stream, Person& person_object);
friend ostream& operator <<(ostream& out_stream, const Person& person_object);
private:
string name; //имя человека
};
#endif
Код: Выделить всё
#ifndef VEHICLE_H
#define VEHICLE_H
#include <string>
#include "person.h"
using namespace personartemenko;
class Vehicle
{
public:
Vehicle();
Vehicle(string the_car_model, int the_cylinders, Person the_info);
Vehicle(const Vehicle& the_object);
...
Person get_person() const;
void set_person(Person the_info);
Vehicle& operator =(const Vehicle& right_side);
private:
string car_model; //название производителя
int cylinders; //количество цилиндров
Person info; //Информация о владельце
};
#endif
Код: Выделить всё
void Vehicle::set_person(Person the_info)
{
info = the_info;
}
Код: Выделить всё
Vehicle test;
test.set_person("qwer qr");
Если создать стринговую переменную и ее загнать в качестве аргумента, то все норм.|10|error: no matching function for call to Vehicle::set_person(const char[8])'|
Как можно обойти эту проблему (интерфейс класса Person никак дополнять нельзя)?