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

Не запускается программа (множественное наследование) - C++

Восстановить пароль Регистрация
 
alexchromets
0 / 0 / 0
Регистрация: 07.12.2011
Сообщений: 19
07.12.2011, 02:40     Не запускается программа (множественное наследование) #1
Здесь надо создать программу, в которой должно быть 2 базовый класса и 1 производных, а также функция print. Я пытался, но выдаёт ошибки. Подскажите, что не так?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#include "StdAfx.h"
#include <iostream.h>
class A
{
private:
        int aa;
public:
        A(int);
    void print();
};
void A::print()
{
    cout<<"Вот она,"<<aa<<endl;
}
 
class B
{
private:
        int bb;
public:
        B(int);
    void print();
};
void B::print()
{
    cout<<" Рыба моей мечты,"<<bb<<endl;
}
 
class C: public A,public B
{
private: 
        int cc;
public:
        C(int);
    void print();
};
void C::print()
{
    cout<<" ЙАЗЬ!"<<cc<<endl;
}
C::C(int aa, int bb, int cc) : A(aa), B(bb)
void main()
{
    C ribka(5,10,15);
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.12.2011, 02:40     Не запускается программа (множественное наследование)
Посмотрите здесь:

Множественное наследование C++
множественное наследование C++
C++ Множественное наследование
C++ множественное наследование
Множественное наследование C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт C++
6543 / 3963 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
07.12.2011, 02:48     Не запускается программа (множественное наследование) #2
Цитата Сообщение от alexchromets Посмотреть сообщение
Я пытался, но выдаёт ошибки.
какие ошибки?
alexchromets
0 / 0 / 0
Регистрация: 07.12.2011
Сообщений: 19
07.12.2011, 03:21  [ТС]     Не запускается программа (множественное наследование) #3
какие ошибки?
D:\projectscpp\oooo\oooo.cpp(41) : error C2511: 'C::C' : overloaded member function 'void (int,int,int)' not found in 'C'
D:\projectscpp\oooo\oooo.cpp(29) : see declaration of 'C'
D:\projectscpp\oooo\oooo.cpp(48) : fatal error C1004: unexpected end of file found
Error executing cl.exe.
Bers
Заблокирован
07.12.2011, 03:25     Не запускается программа (множественное наследование) #4
конструктор у вас объявлен вот так:

Цитата Сообщение от alexchromets Посмотреть сообщение
C(int);
а реализован вот так:

Цитата Сообщение от alexchromets Посмотреть сообщение
C::C(int aa, int bb, int cc) : A(aa), B(bb)
Вы считаете, что вы все правильно делаете?
Кстати, реализация оформлена синтаксически не правильно.
Присутствует список инициализации, но отсутствует само тело конструктора.

Об этих двух моментах вам компилятор услужливо и сообщает
alexchromets
0 / 0 / 0
Регистрация: 07.12.2011
Сообщений: 19
07.12.2011, 03:48  [ТС]     Не запускается программа (множественное наследование) #5
А как правильно написать?
Bers
Заблокирован
07.12.2011, 03:55     Не запускается программа (множественное наследование) #6
Цитата Сообщение от alexchromets Посмотреть сообщение
А как правильно написать?
Например так:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
class A
{
private:
                int aa;
public:
            A(int);
        void print();
};
void A::print()
{
        cout<<"Вот она,"<<aa<<endl;
}
 
class B
{
private:
                int bb;
public:
            B(int);
        void print();
};
void B::print()
{
        cout<<" Рыба моей мечты,"<<bb<<endl;
}
 
class C: public A,public B
{
private: 
                int cc;
public:
                C(int aa_, int bb_, int cc_);
        void print();
};
void C::print()
{
        cout<<" ЙАЗЬ!"<<cc<<endl;
}
C::C(int aa_, int bb_, int cc_) : A(aa_), B(bb_) { cc=cc_; }
void main()
{
        C ribka(5,10,15);
}
alexchromets
0 / 0 / 0
Регистрация: 07.12.2011
Сообщений: 19
07.12.2011, 04:15  [ТС]     Не запускается программа (множественное наследование) #7
Просто я хочу разобраться в наследовании хотя бы на простых примерах, но у меня даже реализация не получается.
Подскажите, если не затруднит.
Bers
Заблокирован
07.12.2011, 04:17     Не запускается программа (множественное наследование) #8
Цитата Сообщение от alexchromets Посмотреть сообщение
Просто я хочу разобраться в наследовании
Разберись с простейшими классами сначала.
alexchromets
0 / 0 / 0
Регистрация: 07.12.2011
Сообщений: 19
07.12.2011, 04:54  [ТС]     Не запускается программа (множественное наследование) #9
Цитата Сообщение от Bers Посмотреть сообщение
Разберись с простейшими классами сначала.
Так и сделаю, спасибо за совет
Только в данный момент я хочу запустить указанную выше программу, но у меня не получается и я просто спросил, как там надо написать, чтобы она заработала.

Добавлено через 18 минут
Понял, спасибо

Добавлено через 4 минуты
Цитата Сообщение от Bers Посмотреть сообщение
Например так:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
class A
{
private:
                int aa;
public:
            A(int);
        void print();
};
void A::print()
{
        cout<<"Вот она,"<<aa<<endl;
}
 
class B
{
private:
                int bb;
public:
            B(int);
        void print();
};
void B::print()
{
        cout<<" Рыба моей мечты,"<<bb<<endl;
}
 
class C: public A,public B
{
private: 
                int cc;
public:
                C(int aa_, int bb_, int cc_);
        void print();
};
void C::print()
{
        cout<<" ЙАЗЬ!"<<cc<<endl;
}
C::C(int aa_, int bb_, int cc_) : A(aa_), B(bb_) { cc=cc_; }
void main()
{
        C ribka(5,10,15);
}
Попробовал запустить этот код - вот что пишет:
oooo.obj : error LNK2001: unresolved external symbol "public: __thiscall B::B(int)" (??0B@@QAE@H@Z)
oooo.obj : error LNK2001: unresolved external symbol "public: __thiscall A::A(int)" (??0A@@QAE@H@Z)
Debug/oooo.exe : fatal error LNK1120: 2 unresolved externals
Bers
Заблокирован
07.12.2011, 04:59     Не запускается программа (множественное наследование) #10
alexchromets, покажи, где у тебя в исходном коде прописаны туловища конструкторов базовых классов?
alexchromets
0 / 0 / 0
Регистрация: 07.12.2011
Сообщений: 19
07.12.2011, 05:09  [ТС]     Не запускается программа (множественное наследование) #11
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#include "StdAfx.h"
#include <iostream.h>
 
class A
{
private:
  int aa;
public:
            A(int);
        void print();
};
void A::print()
{
        cout<<"Âîò Г®Г*Г*,"<<aa<<endl;
}
 
class B
{
private:
                int bb;
public:
            B(int);
        void print();
};
void B::print()
{
        cout<<" ÐûáГ* ìîåé ìå÷òû,"<<bb<<endl;
}
 
class C: public A,public B
{
private: 
                int cc;
public:
                C(int aa_, int bb_, int cc_);
        void print();
};
void C::print()
{
        cout<<" ÉÀÇÜ!"<<cc<<endl;
}
C::C(int aa_, int bb_, int cc_) : A(aa_), B(bb_) { cc=cc_; }
void main()
{
        C ribka(5,10,15);
}
Это всё, что имеется. Больше ничего не делал.
Bers
Заблокирован
07.12.2011, 05:20     Не запускается программа (множественное наследование) #12
компилятор сказал тебе: мне нужны конструкторы классов.

Будут классы - программа запустится. Не будит классов - не запустится.

Намек ясен?
alexchromets
0 / 0 / 0
Регистрация: 07.12.2011
Сообщений: 19
07.12.2011, 05:35  [ТС]     Не запускается программа (множественное наследование) #13
Цитата Сообщение от Bers Посмотреть сообщение
компилятор сказал тебе: мне нужны конструкторы классов.

Будут классы - программа запустится. Не будит классов - не запустится.

Намек ясен?
Как то так налепил и стало об 1 ошибке заявлять:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include "StdAfx.h"
#include <iostream.h>
 
class A
{
private:
  int aa_;
public:
            A();
            A(int a);
        void print();
};
void A::print()
{
        cout<<"Âîò Г®Г*Г*,"<<aa_<<endl;
}
 
class B
{
private:
                int bb_;
public:
            B();
            B(int b);
        void print();
};
void B::print()
{
        cout<<" ÐûáГ* ìîåé ìå÷òû,"<<bb_<<endl;
}
 
class C: public A,public B
{
private: 
                int cc_;
public:
                C(int aa_, int bb_, int cc_);
        void print();
};
void C::print()
{
        cout<<" ÉÀÇÜ!"<<cc_<<endl;
}
C::C(int aa_, int bb_, int cc_) : A(aa_), B(bb_) { cc=cc_; }
void main()
{
        C ribka(5,10,15);
}
D:\projectscpp\oooo\oooo.cpp(44) : error C2065: 'cc' : undeclared identifier
В общем, конструкторы же так создаются, правильно?
C++
1
2
3
4
5
6
7
8
9
10
11
class time
{
    public: 
time();
time(int h, int m=0, int s=0); 
{hours=h; minutes=m; seconds=s;}
        private;
            int hours;
            int minutes;
            int seconds;
};
Если да, то всё равно для такого примерчика понять не могу ничего
Bers
Заблокирован
07.12.2011, 05:49     Не запускается программа (множественное наследование) #14
Цитата Сообщение от alexchromets Посмотреть сообщение
В общем, конструкторы же так создаются, правильно?
Нет. Не правильно.

У тебя налицо не знание не только темы классов, но и функций.
Единственное, что я могу тебе посоветовать - это взять в руки книжку для новичков, и учить все с самого начала.
greeezz
272 / 165 / 4
Регистрация: 10.07.2011
Сообщений: 441
07.12.2011, 06:07     Не запускается программа (множественное наследование) #15
alexchromets, вы объявляете конструкторы в классах но не делаете их имплементацию.

Добавлено через 4 минуты
как минимум надо добавить в имплементацию классов A и B
C++
1
2
3
A::A(int a) : aa(a){}
..............
B::B(int b) : bb(b){}
Добавлено через 7 минут
пофиксил малость ваш код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#include "StdAfx.h"
#include <iostream>
using std::cout;
using std::endl;
using std::cin;
 
class A {
private:
    int aa;
public:
    A(int a);
    void print();
};
 
A::A(int a) :
        aa(a) {
}
 
void A::print() {
    cout << "Вот она," << aa << endl;
}
 
class B {
private:
    int bb;
public:
    B(int b);
    void print();
};
 
B::B(int b) :
        bb(b) {
}
 
void B::print() {
    cout << " Рыба моей мечты," << bb << endl;
}
 
class C: public A, public B {
private:
    int cc;
public:
    C(int aa_, int bb_, int cc_);
    void print();
};
void C::print() {
    A::print();
    B::print();
    cout << " ЙАЗЬ!" << cc << endl;
}
 
C::C(int aa_, int bb_, int cc_) :
        A(aa_), B(bb_) {
    cc = cc_;
}
 
int main() {
    C ribka(5, 10, 15);
    ribka.print();
    cin.get();
    return 0;
}
alexchromets
0 / 0 / 0
Регистрация: 07.12.2011
Сообщений: 19
07.12.2011, 06:22  [ТС]     Не запускается программа (множественное наследование) #16
Всё работает, спасибо!
Bers
Заблокирован
07.12.2011, 06:25     Не запускается программа (множественное наследование) #17
Цитата Сообщение от alexchromets Посмотреть сообщение
Всё работает, спасибо
ты ж только этого и ждал. Сам с++ учить не обязательно.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.12.2011, 06:29     Не запускается программа (множественное наследование)
Еще ссылки по теме:

C++ Множественное наследование
C++ Множественное наследование
C++ Множественное наследование

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
alexchromets
0 / 0 / 0
Регистрация: 07.12.2011
Сообщений: 19
07.12.2011, 06:29  [ТС]     Не запускается программа (множественное наследование) #18
Цитата Сообщение от Bers Посмотреть сообщение
ты ж только этого и ждал. Сам с++ учить не обязательно.
Не совсем так.
Просто я хотел добить этот пример, но самому мне это никак не удавалось. Зато теперь я знаю, что я ничего не знаю.
Yandex
Объявления
07.12.2011, 06:29     Не запускается программа (множественное наследование)
Ответ Создать тему
Опции темы

Текущее время: 10:46. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru