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

Массив указателей на объекты подклассов - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ массивы http://www.cyberforum.ru/cpp-beginners/thread554536.html
1.Задан двухмерный массив (матрица) вещественных чисел. Найти наибольший и наименьший элементы массива. Размерность массива (число столбцов, число строк) и значения его элементов ввести с клавиатуры. Правила3.15. Запрещено создавать темы с множеством вопросов во всех разделах, кроме разделов платных услуг. Один вопрос - одна тема.
C++ Написать генератор случайных чисел Только с алгоритмом средних квадратов http://www.cyberforum.ru/cpp-beginners/thread554535.html
Сортировка матрицы. C++
Имеется матрица.Переставить столбцы матрицы в порядке убывания сумм элементов. SOS
Вопросы по книге С. Бобровского "Самоучитель программирования на языке С++" C++
В книге С. Бобровского "Самоучитель программирования на языке С++", написание кодов небольших программ и объяснения для чего все написано. Во втором примере создание программы "Игра в кости" создается файл Text.h который подключается ко листу программы и содержит в себе константы текстовых переменных типа AnsiString: const AnsiString LAST_DICE_STR = "Последний бросок был "; Компилятор...
C++ Работа с длинными числами (непонятное поведение при выводе второго массива символов) http://www.cyberforum.ru/cpp-beginners/thread554518.html
Необходимо составить программу,которая будет работать с длинными числами. Кратко опишу: записываем в программу цифры(в виде строки), после переносим их в конец массива для удобства выполнения мат. операций, потом вывожу введённые числа для проверки правильности. Проблема заключается в том,что 2-й массив выводит неправильно: иногда может вывести все нолики, а иногда вначале ноли,а потом...
C++ Установить ширину в dataGridView для всех столбцов в 35. В C# я знаю как сделать: for (int i = 0; i < 8; i++) { dataGridView1.Columns.Width = 30; } а в плюсах нет свойства Width , как по-другому осуществить? подробнее

Показать сообщение отдельно
IFree Host
Заблокирован

Массив указателей на объекты подклассов - C++

21.04.2012, 19:28. Просмотров 1424. Ответов 9
Метки (Все метки)

Доброго времени суток всем!!!

Проф задал написать парсер простых математических выражений с использованием скобок.
Код не должен выходить за рамки изученого матерьяла и не должен использовать сторонних библиотек

Текущая проблема:

По условию задания необходимо создать базовый класс "выражение"

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
#pragma once
 
class Expression
{
    int m_wert;
 
public:
 
    Expression();
    ~Expression();
 
    void Wert(int wert);
    int Print();
};
 
#include "stdafx.h"
#include "Expression.h"
 
Ausdruck::Expression()
{
}
 
Ausdruck::~Expression()
{
}
 
void Expression::Wert(int wert) {
    m_wert = wert;
}
 
int Expression::Print() {
    return m_wert;
}

от этого класса порождаются подклассы *(в качестве примера приведу только один, они все-равно все одинаковые) "Division" "Substraktion" "Addition" "Multiplikation" "Konstante"


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
#include "Expression.h"
 
class Konstante : Expression{
 
    int m_wert;
 
public:
 
    Konstante();
    ~Konstante();   
 
    void Wert(int wert);
    int Print();
};
 
#include "stdafx.h"
#include "Konstante.h"
 
Konstante::Konstante()
{
}
 
Konstante::~Konstante()
{
}
 
void Konstante::Wert(int wert) {
    m_wert = wert;
}
 
int Konstante::Print() {
    return m_wert;
}

далее в парсере я пытаюсь создать массив указателей с типом базового класса

C++
1
2
3
4
5
6
7
struct expressionStack
{
    int top;
    Expression* stack[40];
};
 
expressionStack expression;


когда константа или оператор прочитаны, они должны быть помещены в массив в виде объекта.
Это необходимо для обработки постфиксных операций

Теперь я хоть медленно но верно подобрался к самому вопросу:

почему не получается сохранить указатель на объект сабкласса в массив?

я это пытаюсь сделать вот так

C++
1
2
    Konstante* konst = new Konstante;
    expression.stack[ausdruck.top] = konst;

и получаю ошибку

'conversion type' conversion from 'type1' to 'type2' exists, but is inaccessible

Будьте добры, объясните почему данный вариант не работает, и что нужно сделать чтобы заработало

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