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

Массив содержащий пойнтеры к субклассам* - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Создание проекта c++ http://www.cyberforum.ru/cpp-beginners/thread55775.html
вот написал полностью рабочую программу. Но её нужно оформить как проект, т.е состоящей из нескольких файлов (например что бы библиотека функций была отдельно, а главный cpp служил только для сбора проекта) не знаю как лучше это объяснить, думаю что поймёте. Среда Borland C++ 3.1 Вот код программы, помогите это сделать или укажите на какую-нибудь литературу. Пробывал гуглить, но ничего не...
C++ что за ошибка? вот програма #include "stdafx.h" #include <iostream> using std::cout; using std::endl; class GradeBook { public: void print() { cout << "Hello"<<endl; http://www.cyberforum.ru/cpp-beginners/thread55751.html
Нахождение суммы ряда... оО C++
Доброго времени суток! Ребят, помогите пожалуйста решить задачу... Возможно, я бы сам смог её решить, но проблема в том, что я не знаю самого принципа решения задачи даже НЕ способом программирования её в С++. Вот, собственно, условие: Найти сумму ряда с точностью e=10(в -4 степени), общий член которого An=10(в n-степени)/n! (факториал). (*сумму ряда? оО"*) Заранее, благодарю!
Пары натуральных чисел. C++
Нужна помощь в реализации задачки. Сам смысл её понятен, и примерно как делать, но все таки реализовать не могу, нету пока опыта в этом деле... Буду рад, если чем-нибудь поможете. Да и идея только одна, по которой и хотел бы сделать, сам алгоритм инвертирования чисел примерно таков: b=b*10+a%10 a/=10 Сама задача: Задано натуральное число N. Вывести на экран все пары натуральных чисел α >...
C++ Чтение из файла http://www.cyberforum.ru/cpp-beginners/thread55719.html
Подскажите как вывести на экран содержимое файла на Си, если данные разделены ";". Файл имеет вид: 1;23233233;1234-43;иванов Иван;34235234;4,4567;
C++ на использование функций ( proc36,40) задачи надо написать на С 2 задачи : Первая - Описать функцию Fib(N) целого типа, вычисляющую N-й элемент последовательности чисел Фибоначчи, которая описывается следующими формулами : F1=1, F2=1, Fk=F(k-2)+F(k-1), K=3,4,... . Используя функцию Fib, найти пять чисел Фибоначчи с данными номерами N1,N2,...,N5. Вторая - Описать функцию Exp1(x,e) вещественного типа (... подробнее

Показать сообщение отдельно
Quisnam
3 / 3 / 0
Регистрация: 11.10.2009
Сообщений: 19

Массив содержащий пойнтеры к субклассам* - C++

11.10.2009, 19:50. Просмотров 878. Ответов 2
Метки (Все метки)

Привет.

У меня есть базовый класс, субкласс и от субкласса ещё субкласс... Выглядит это примерно так:

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
class _OtherClass
{
public:
    _OtherClass(int num = 123): _p(num)
    { }
    int _p;
};
 
class Base
{
public:
    Base(int num = 100): _s(num)
    { }
 
    virtual void Info(_OtherClass& pClass) const = 0;
    virtual void Text() const = 0;
 
protected:
    int _s;
};
 
class Member : public Base
{
public:
    Member(int num = 500):
      Base(num)
      { }
};
 
class nMember : public Member
{
public:
    nMember(int num = 1000): Member(num)
    { }
 
    virtual void Info(_OtherClass& pClass) const
    { 
        cout << "Inherited from Member\n" << "_p is: " << pClass._p << "\n";
    }
 
    virtual void Text() const
    {
        cout << "1 2 3 4 5..." << _s << "\n";
    }
};
Существуют две основные проблемы:
Первая и самая важная проблема - мне необходимо, создать массив в котором будут пойнтеры к субклассам. Проблема в том, что этот массив должен быть в классе _OtherClass, а как Вы видите из кода, nMember обращается к _OtherClass, если просто создать такой массив в _OtherClass то классы будут обращатся друг к другу, что на практике не возможно... Во всяком случае даже если я применяю прототип класса, программа не компилируется, ибо один из классов не видит второй.
Сам массив сделать не проблема, к примеру вот так он будет выглядеть в main()
C++
1
2
3
4
Member* AnyName[2];
AnyName[0] = new nMember(); 
AnyName[1] = new nMember2(); 
//........
Если кто-нибудь знает, как такую конструкцию поместить в _OtherClass и поделится информацией, буду очень благодарен. Я пытался создавать friend функцию которая связала бы два класса, но ничерта не получилось.

#Edit:
Для второй проблемы решение нашел, оказывается позволительно использовать синтаксис: Base* AnyName = new nMember();


Вторая проблема, если у меня несколько веток субклассов от Base, например:
Base->Member->nMember
Base->Member2->_Member
То мне придётся создавать два массива:
Member* AnyName[2];
Member2* AnyName[2];

Как-нибудь можно сделать так, чтобы был всего один массив, при этом принимал и nMember и _Member ?


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