С учетом этих двух функций:
bool logMessage(LogType_E, unsigned int, int, const char *, ...); //!< Log message with parameters
bool logMessage(LogType_E, int, const char *, ...); //!< Logs message with domain of Log class
И вызова одной из них:
A3D_LOG_INSTANCE.logMessage(Log::LOG_INFO, 0, "Number = %d", 10);
Ошибка 1 Ошибка C2666: 'AX :: Base :: Log ::logMessage ': 2 перегрузки имеют похожие преобразования o: \ AX_FusRecAlg \ src \ base \ test.u \ LogSimpleFileTest \ LogSimpleFileTest.cpp 50 AX.Base.LogSimpleFileTest
Может кто-нибудь объяснить мне на простом английском языке, почемуэта ошибка возникает и возможно предложить альтернативу?Я не понимаю, как функция, которая имеет 3 аргумента перед символом *, совпадает с функцией, которая имеет два аргумента?!
Спасибо.
Редактировать:
Поскольку некоторые из вас задаются вопросом, что я скрываю информацию: Невозможно изменить сигнатуру функции.Шаблоны использовать нельзя. Достаточно просто объяснить причину возникновения этой ошибки.
enum LogType_E {
LOG_ERROR = 0, //!< error
LOG_WARNING = 1, //!< warning
LOG_SUCCESS = 2, //!< success
LOG_INFO = 3, //!< info
LOG_TRACE = 4, //!< trace message if tracing is enabled
LOG_TRACE1 = 5, //!< trace level 1
LOG_TRACE2 = 6, //!< trace level 2
LOG_TRACE3 = 7, //!< trace level 3
LOG_TRACE4 = 8 //!< trace level 4
};
bool logMessage(LogType_E, unsigned int, int, const char *, ...)
{
return true;
}
bool logMessage(LogType_E, int, const char *, ...)
{
return true;
}
int main()
{
logMessage(LOG_TRACE, 0, 0, "Teststring 2");
return 0;
}
Скопировать и вставить указанный выше код в файл .cpp и запустить его или щелкнуть здесь.