Я не могу придумать чистый способ сделать это, но я могу подумать о каком-то уродливом хаке, который будет работать, пока код, использующий его, является частью класса (и если TCODConsole действительно содержит только статические функции-члены).Допустим, вы bar()
, функция-член класса Foo
, и вы хотите вызвать функцию baz()
, которая является статическим членом TCODConsole, без полной ее квалификации.То, что вы можете сделать, это получить Foo из TCODConsole в частном порядке:
class Foo : private TCODConsole
{
void bar()
{
baz();
}
};
Да, это ужасно.: (
Если вы хотите использовать Boost.PP (макрос-библиотека препроцессора Boost - вам не нужно компилировать или включать что-либо еще из Boost, чтобы использовать его), вы, вероятно, можете сделать его менее уродливым, но довольнонемного более запутанный макрос, который «импортирует» эти функции для вас, оборачивая их встроенными функциями в другое пространство имен (которое вы затем можете импортировать по своему желанию). При этом вам все равно потребуется явно указать имя каждой функции, которую вы хотите«импортировать», поэтому ваш код (без макроса) будет выглядеть примерно так:
namespace TCODStatic
{
IMPORT_FROM_TCOD(foo)
IMPORT_FROM_TCOD(bar)
IMPORT_FROM_TCOD(baz)
IMPORT_FROM_TCOD(spaz)
}
, и тогда вы сможете написать using namespace TCODStatic;
в любом месте.