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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
savak
2 / 2 / 0
Регистрация: 28.03.2009
Сообщений: 61
#1

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

14.03.2010, 21:26. Просмотров 840. Ответов 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 *)'

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

Полиморфизм инкапсуляция и наследование(ООП) - C++
Не как не могу понять зачем нужен Полиморфизм и инкапсуляция и их определение может вы подскажите, наследования я знаю

ООП в С++ (наследование, инкапсуляция, полиморфизм, перегрузка операторов): что читать? - C++
Нужно освежить, подзабылось. Были у меня институцкие методички доцента Шеховцова. Хороша вещь, но потерялись. Нужны либо набор...

ООП. Полиморфизм - C++
Мальчики, учусь на МехМате. Для сдачи зачёта по ООП необходимо написать последнюю программу: Задание: полиморфизм Указание: во всех...

Наследование и полиморфизм... - C++
Есть спецы в этой теме?) Сейчас пишу курсовую, в методичке (препод сильно снижает за отклонения от инструкций) сказано создать базовый...

Полиморфизм, наследование - C++
Создать абстрактный базовый класс с виртуальной функцией*— площадь. Создать производные классы: прямоугольник, круг, прямоугольный...

Наследование и полиморфизм. - C++
Вопрос следующий. Как мне вытащить функцию из родителя класса родителя, при условии что родителей тек. класса у меня 2! )) Запутанно? Ниже...

1
Genius Ignat
1236 / 774 / 44
Регистрация: 16.09.2009
Сообщений: 2,014
14.03.2010, 21:52 #2
Вот похожая тема, там есть интересное, пробежаться циклом, догадаться не трудно.
абстрактный базовый класс
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.03.2010, 21:52
Привет! Вот еще темы с ответами:

Наследование и полиморфизм - C++
Написать демонстрационную программу, в которой создаются объекты различных классов. Определение классов, их реализацию, демонстрационную...

Наследование и полиморфизм - C++
Добрый день ребятюни!! Срочно требуется ваша помощь! Программа которая служит для вывода выдающихся учеников и преподов. Если у...

Наследование, полиморфизм - C++
Не могу реализовать полиморфизм для метода getShow() ну и в теории сетШов(). Но сейчас о гете говорим. Я создал дополнительный класс...

Полиморфизм, наследование - C++
Товарищи, кто может, объясните пожалуйста. Просят добавить новый тип объектов Trap. Методы в нем объявлены как виртуальные, но в...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru