2010-09-09 1 views
1

У меня есть класс счетов , из которого у меня есть 3 типа счетов сбережения, кредит и домашнее хозяйство.C++ суперкласс Array, но доступ к подклассам методов?

я создал дерево двоичного поиска для хранения всех учетных записей, как тип счета

как я теперь доступ методы подклассов в зависимости от типа объекта?

разрешил все ошибки с синтаксисом и кодированием, но это.

ломал голову на 2 дня. кто-нибудь знает, как это делается?

+4

Возможно, вы можете показать код, который у вас есть, чтобы люди могли помочь вам с вашей конкретной проблемой. –

+0

Я предполагаю, что вы храните учетные записи по типу базового класса, а не по указателю на базовый класс, поэтому нарезаете объекты. –

+1

Джон делает хороший момент - когда вы проходите объекты вокруг, делайте это по указателю, иначе вы будете обрезать объекты. http://stackoverflow.com/questions/274626/what-is-the-slicing-problem-in-c – Ragster

ответ

3

Простой ответ: если вам нужно получить доступ к функциональности производного класса из указателя базового класса, у вас возникнет проблема с дизайном. В принципе, вам не нужно знать. Если вы это сделаете, что-то не так. Вы считаете (в чистом смысле) вызов виртуальных функций из интерфейса базового класса и производные классы реализуют свои переопределения, чтобы они выполняли корректно.

Теперь, иногда, практически, вам нужно. Таким образом, есть возможность понижения. Если у вас есть информация о типе времени выполнения в вашей сборке, вы можете сделать dynamic_cast<type*>, и если возвращаемый указатель не равен нулю, то у вас есть экземпляр этого типа.

Если вы идете по этому пути, оберните его чем-то аккуратным и не позволяйте ему размножаться - он может стать беспорядочным. Я предлагаю вам посмотреть, нет ли лучшего способа, используя полиморфизм.

Удачи!

+0

У меня было несколько вещей, но вы поняли эту идею, не слишком технично, и вам было немного быстрее типирование. : P – SubSevn

+0

Спасибо Свену :) Так часто, у меня есть ответ, и кто-то пишет, прежде чем я это сделаю. Это до второго, чтобы получить ваш в первый раз! Я полагаю, хорошо, что так много людей хотят помочь. – Ragster

Смежные вопросы