Изменить имя метода библиотеки

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

0

Решение

вы можете иметь такой заголовок

inline int NiceName(){return HorribleName();}

Не работает для методов класса, там, возможно, вам придется прибегнуть к — о ужас — макросов

1

Другие решения

Если вы действительно хотите изменить имя метода класса, вы можете. Просто создайте подкласс исходного класса и добавьте новый метод с красивым именем, который идеально передает его параметры в метод с ужасным именем, которое вы хотели бы изменить.

struct B
{
// for example
int UglyName(std::string str, int i)
{ std::cout << str << " " << i << std::endl; return i + 1; }
};

struct C : B
{
template<typename ...Args>
auto PrettyName(Args&& ...args)
{ return UglyName(std::forward<Args>(args)...); }
};

int main()
{
C c;
std::cout << "return value: " << c.PrettyName("Test Message: ", 23) << std::endl;
return 0;
}
1

Так как имя метода — уровень детализации ABI, не будет одного ответа для каждой машины … разные ABI используют разные схемы искажения имен и схемы кодирования параметров и т. д. … если вы сузите его, по крайней мере, до ОС, может быть инструмент, который вы можете использовать для переименования некоторых методов (binutils или что-то) .. но вам также придется изменить заголовки, чтобы использовать новое имя, иначе компилятор захлебнется …

-2
По вопросам рекламы [email protected]