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

ООП Полиморфизм Наследование - C++

Восстановить пароль Регистрация
 
savak
2 / 2 / 0
Регистрация: 28.03.2009
Сообщений: 61
14.03.2010, 21:26     ООП Полиморфизм Наследование #1
У меня есть базовый класс и 2 производных от него класса...
Как сделать, чтобы в программе я мог сделать такое обьявление:

C++
1
2
3
Force fc[2];
    fc[0] = new GravityForce(nofg, 5, 2);
    fc[1] = new ViscousDragForce(nofvd, 6, 2);
И потом пробежатся по массиву и вызвать для каждого производного класса его собственный виртуальный метод примерно так
C++
1
2
3
4
for(int i = 0; i < 2; i++)
{
 fc[i].ApplyForce(ps)
}

Вот листинг этих классов:
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
// Абстрактный класс силы
class Force
{
protected:
    int * nofparticles; // Номера частичек, в массиве частиц, к которым применяется сила
    int n;
public:
    Force(int * numbers_of_particles, int number);
    void virtual ApplyForce(ParticleSystem & A)=0;
};
 
// Сила гравитации
class GravityForce : public Force
{
private:
    double G;
public:
    GravityForce(int * numbers_of_particles, int number, double g) : Force(numbers_of_particles, number) { G = g; }
    void ApplyForce(ParticleSystem & A);
};
 
// Сила вязкости
class ViscousDragForce : public Force
{
private:
    double k;
public:
    ViscousDragForce(int * numbers_of_particles, int number, double kof) : Force(numbers_of_particles, number) { k = kof; }
    void ApplyForce(ParticleSystem & A);
};
Вот ошибки:
1>c:\documents and settings\virex\мои документы\visual studio 2008\projects\courseworkps\courseworkps\main.cpp(31) : error C2512: 'Force' : no appropriate default constructor available
1>c:\documents and settings\virex\мои документы\visual studio 2008\projects\courseworkps\courseworkps\main.cpp(32) : error C2679: binary '=' : no operator found which takes a right-hand operand of type 'GravityForce *' (or there is no acceptable conversion)
1> c:\documents and settings\virex\мои документы\visual studio 2008\projects\courseworkps\courseworkps\forces.h(16): could be 'Force &Force::operator =(const Force &)'
1> while trying to match the argument list '(Force, GravityForce *)'
1>c:\documents and settings\virex\мои документы\visual studio 2008\projects\courseworkps\courseworkps\main.cpp(33) : error C2679: binary '=' : no operator found which takes a right-hand operand of type 'ViscousDragForce *' (or there is no acceptable conversion)
1> c:\documents and settings\virex\мои документы\visual studio 2008\projects\courseworkps\courseworkps\forces.h(16): could be 'Force &Force::operator =(const Force &)'
1> while trying to match the argument list '(Force, ViscousDragForce *)'

Помогите плз, а то неделя до сдачи курсовой, а мне еще писать и писать((((
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.03.2010, 21:26     ООП Полиморфизм Наследование
Посмотрите здесь:

ООП + полиморфизм = wtf? C++
Наследование и полиморфизм. C++
C++ Наследование и полиморфизм
C++ Наследование и полиморфизм...
ООП. Полиморфизм C++
C++ Наследование и полиморфизм классов
C++ Полиморфизм инкапсуляция и наследование(ООП)
Наследование, полиморфизм C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Genius Ignat
1233 / 771 / 44
Регистрация: 16.09.2009
Сообщений: 2,014
14.03.2010, 21:52     ООП Полиморфизм Наследование #2
Вот похожая тема, там есть интересное, пробежаться циклом, догадаться не трудно.
абстрактный базовый класс
Yandex
Объявления
14.03.2010, 21:52     ООП Полиморфизм Наследование
Ответ Создать тему
Опции темы

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