Форум программистов, компьютерный форум CyberForum.ru

Как создать объект класса? ПРоблемма из-за раздельной компиляции - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Дружественная функция http://www.cyberforum.ru/cpp-beginners/thread1006806.html
#include <iostream> #include <math.h> using namespace std; class massiv { int len,*p_mas; public : massiv() {} massiv (int n) { int *p;
C++ На сколько процентов изменится цена литра бензина через z лет? Цена на бензин каждую весну повышается на x%, а каждую осень опускается на y%. На сколько процентов изменится цена литра бензина через z лет? Сколько будет стоить литр бензина через z лет,если сейчас он стоит p рублей? Исходные данные x,y,z вводит пользователь с клавиатуры http://www.cyberforum.ru/cpp-beginners/thread1006805.html
Создать класс вектор Vector (int *). Перегрузить операции: C++
Создать класс вектор Vector (int *). Перегрузить операции: 1) ++ как унарный метод класса, возводящий элементы вектора в квадрат; 2) -- как унарную дружественную функцию, вычитающую каждый следующий элемент вектора из предыдущего (последний элемент оставить неизменным); 3) + как бинарный метод класса, вычисляющий сумму двух векторов; 4) < как бинарную дружественную функцию,...
C++ Составить блок-схему по коду
Люди помогите, пожалуйста, очень прошу , нарисуйте блок схему вот к этой части программы string ccc; char c; ifstream fi("D:\\text.txt"); cout << "Input value 0-9" << endl; cin >> c; ofstream fo("D:\\outtext.txt"); while((fi >> ccc))
C++ "арифметика" #DEFINE http://www.cyberforum.ru/cpp-beginners/thread1006763.html
Здравствуйте, коллеги! Помогите разобраться, почему в приведенном ниже коде результатом является: С==2? Какова арифметика происходящего? Спасибо! #include <iostream>
C++ Аналог strrchr Проверьте аналог strrchr кому не лень пожалуйста. Компилятор любит выдавать ошибки при тестировании программы. Может чего глупого написал и не замечаю? #include <iostream> using namespace std; char *mystrrchr(char *a, int s) { int j=strlen(a)-1; if(j==0) return &a; while(a!=a) { подробнее

Показать сообщение отдельно
allure
1 / 1 / 0
Регистрация: 13.11.2013
Сообщений: 41
13.11.2013, 19:04     Как создать объект класса? ПРоблемма из-за раздельной компиляции
Есть 4 файла
engine.h - базовый класс
engine.cpp - реализация методов базового класса
car.h - класс поизводный от engine
car.cpp - реализация класа car
main.cpp - функция main
в main создаётся объект класса car
car a;
так не компилируется g++;
если всё в одном файле, то всё проходит.
engine.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <string>
using namespace std;
class engine
{
 protected:
    short power;
    float displace; //объём
    string fuel; 
    bool run;
public:
    engine (short,float,string);
    bool runing();
    bool stop();
    friend istream& operator>>(istream&, engine&);
    friend ostream& operator<<(ostream&, engine&);
};

engine.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include "engine.h"
engine::engine (short pow,float dis,string f):
        power(pow), displace(dis), fuel(f)
    {}
istream& operator>>(istream& stream, engine& a)
    {return stream>>a.power>>a.displace>>a.fuel;}
ostream& operator<<(ostream& stream, engine& a)
    {
    if (a.run) return stream<<a.power<<a.displace<<a.fuel<<"Запущен\n";
    return stream<<a.power<<a.displace<<a.fuel<<"Не запущен";
    }
bool engine::runing()
    {
    cout<<"Двигатель заведён"<<endl;
    run=true;
    return true;
    }
bool engine::stop()
    {
    cout<<"Двигатель заглушен"<<endl;
    run=false;
    return false;
    }

car.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include "engine.h"
class car :public engine
{
    string marka; 
    short year;
    double speed;
  public:
    friend istream& operator>>(istream&, car&);
    friend ostream& operator<<(ostream&, car&);
    car(short,float,string,string, short, double);
    void drive();
};

car.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include "car.h"
car::car(short pow=200,float dis=2.6,string f="бензин",
         string m="No", short y=2013, double sp=220):
      engine(pow,dis,f), 
      year(y),marka(m), speed(sp)
    {
    cout<<*this;
    }
istream& operator>>(istream& stream, car& a)
    {return stream>>a.marka>>a.year>>a.speed>>a.power>>a.displace>>a.fuel;}
ostream& operator<<(ostream& stream, car& a)
    {return stream<<endl<<"Марка: "<<a.marka<<".  Год выпуска: "<<a.year
    <<".  Максимальная скорость: "<<a.speed<<'.'<<endl;}
void car::drive()
    {
      std::cout<<"Вжиииих";
    }

main.cpp
C++
1
2
3
4
5
6
#include "car.h"
int main ()
{
    car a;
    return 0;
}

Терминал
$ g++ engine.h car.h main.cpp
main.cpp: In function ‘int main()’:
main.cpp:4:6: error: no matching function for call to ‘car::car()’
car a;
^
main.cpp:4:6: note: candidates are:
car.h:10:5: note: car::car(short int, float, std::string, std::string, short int, double)
car(short,float,string,string, short, double);
^
car.h:10:5: note: candidate expects 6 arguments, 0 provided
car.h:2:7: note: car::car(const car&)
class car : public engine
^
car.h:2:7: note: candidate expects 1 argument, 0 provided

Подскажите, где накасячил? И как исправить. Спасибо.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 21:20. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru