Использование абсолютного адреса указателя в качестве аргумента шаблонаC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Использование абсолютного адреса указателя в качестве аргумента шаблона

Сообщение Anonymous »

У меня есть класс шаблонов, который принимает в качестве первого аргумента шаблона указатель Foo *. Я хотел бы создать одну из них с помощью Foo, расположенного по абсолютному адресу, например, < /p>

class foo
{
int baz;
};

template class bar
{
public:
bar() {}
void update() { /* ... */ }
};

// ....

#define FOO_ADDR ((foo *)0x80103400)
#define FOO_NULL ((foo *)0)

foo testFoo;

bar myFoo; // fails with non-integral argument
bar huh; // compiles, I was surprised by this
bar test; // compiles as expected (but not useful)
< /code>

Кто -нибудь знает, что это возможно, не прибегает к линкере и не получает определения foo_addr с внешней связью? Не изменил поведение. < /p>

Обновление: вот предложенное решение (с реальным кодом на этот раз) с использованием int Casts < /p>

template class LedToggle
{
uint32 mTicks;
uint32 mSetReset;

public:

LedToggle()
{
mTicks = 0;
mSetReset = 1 > 31;
((GPIO_TypeDef *)PORT)->BSRR = mSetReset & mask;
mSetReset ^= ((1

Подробнее здесь: https://stackoverflow.com/questions/373 ... e-argument
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»