реклама на сайте
подробности

 
 
> Не работает полиморфизм для глобальных объектов
yanvasiij
сообщение Dec 25 2015, 06:33
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 321
Регистрация: 23-12-11
Из: Уфа
Пользователь №: 69 041



Доброго времени суток! Компилятор arm-none-eabi-gcc, процессор stm32f407. Объявил два класса, один базовый, другой наследник:

Код
class SomeBase
{
    public:
    virtual void foo (void) = 0;
}

class SomeDelivered : public SomeBase
{
    public:
    void foo (void)
    {
        printf("hello!\r\n");
    }
}


Далее внутри main'a делаю следующее:

Код
SomeDelivered a; /**<<<< Объект объявлен ГЛОБАЛЬНО */


int main (void)
{
    ...
    SomeBase *p;
    p = &a;
    p->foo();
    ...
}


Программа выпадает в HardFault сразу после вызова p->foo().

А если я делаю так:

Код
int main (void)
{
    ...
    SomeDelivered a; /**<<<< Объект объявлен ЛОКАЛЬНО */
    SomeBase *p;
    p = &a;
    p->foo();
    ...
}


то все работает
.

В чем дело, помогите пожалуйста?! В keil такая штука работает без проблем и так и так.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 05:23
Рейтинг@Mail.ru


Страница сгенерированна за 0.01353 секунд с 7
ELECTRONIX ©2004-2016