Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Объявление объекта класса KEIL C++
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему
marcinio
Надо написать одну программу для AT91SAM7S64 в KEIL (C++), но вот запутался. Мне надо объявить объект класса TimeDelay, что делаю строчкой:
Код
TimeDelay *Delay = new TimeDelay;

Вопрос: где мне объявить TimeDelay объект, что-бы можно было его использовать и в Main.cpp, и в Interrupt.cpp? Очень прошу, подпишите эти строчки в коде ниже a14.gif

Вот примерный код:
Main.cpp
Код
#pragma once
#include "Interrupt.cpp"
#include "Delay.cpp"

int main (void)
{
    Тут будет использоватсья *Delay;
...
}

Delay.cpp
Код
#pragma once
#include "Interrupt.cpp"

class TimeDelay
{
    ...
};

Interrupt.cpp
Код
__irq void Interrupt()
{
    Тут будет использоватсья *Delay;
...
}
Сергей Борщ
1)Вам надо внимательно изучить в букваре по C главу, посвященную разбивке программы на модули. Файлы .cpp никогда (ну, почти никогда) не включаются в другие .cpp файлы.
2)Ваш объект будет уничтожаться в процессе работы программы? Я полагаю, что поскольку указатель на него используется в прерывании, объект будет жить вечно. Тогда зачем его создавать динамически (через new)?
Вот примерный код:
Main.cpp
Код
#include "Delay.h"

TimeDelay Delay;   // глобальный объект, память выделяется статически на этапе линковки, может быть определен в любом подходящем по смыслу .cpp
int main (void)
{
    Тут будет использоватсья Delay или *pDelay, если все же нужен указатель;
...
}

Delay.h
Код
#ifndef DELAY_H__
#define DELAY_H__
class TimeDelay
{
    ...
};

extern TimeDelay Delay;
static TimeDelay* const pDelay = &Delay;
#endif // DELAY_H__

Interrupt.cpp
Код
#include "Delay.h"
__irq void Interrupt()
{
    Тут будет использоватсья *Delay;
...
}
Neural
Main.cpp
TimeDelay Delay;

Interrupt.cpp
external TimeDelay Delay;
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.