Я знаю ... основы как-то, но я не понимаю. Я читал, что могу поместить определение своей функции в свой заголовок и включить его. Я никогда не делал этого до сих пор, потому что мне понравилось мое определение в файле .cpp отдельно от его объявления в файле заголовка.Множественное определение - почему я не могу определить их в заголовке
Теперь у меня было всего две функции, и я не хочу добавлять дополнительные файлы для этих определений.
header.h
const QString reviewToString(const int); //Declaration - do I even need it now?
const QString statusToString(const int); //Declaration - do I even need it now?
const QString reviewToString(const int r) //Definition
{
switch(r)
{
case 0:
return "Excellent";
case 1:
return "Great";
case 2:
return "Okay";
case 3:
return "Poor";
case 4:
return "Terrible";
default:
return "Unknown";
}
}
const QString statusToString(const int s) //Definition
{
switch(s)
{
case 0:
return "Watched";
case 1:
return "Bought";
default:
return "Not Watched";
}
}
Это выдержка из моего headerfile. У меня есть другие enum
s и struct
s, но они не так важны для этих функций, потому что они просто переводят целое число в QString, которое будет отображаться где-то в другом месте. У меня также есть охранник.
Теперь я получаю тонны ошибок, как это:
множественное определение `reviewToString (межд)»
Почему? Почему я не могу просто объявить и/или определить их в этом заголовке?
Короткий ответ: используйте 'inline'. – deepmax
@MM. хорошо, что это умно! Спасибо .. – Davlog
BTW: Не указывайте тип возврата как 'const', пожалуйста. Он не имеет никакой реальной выгоды для реализации вами функции, и вызывающий может чувствовать себя оскорбленным, поскольку вы убираете некоторую свободу в том, что делать с объектом. Не берите в голову, что некоторые случаи, вызывающие накладные расходы ... –