Я работаю над С++ и ошибся, что не знаю точно, почему. Я нашел решение, но все еще хочу знать, почему.
class Base
{
public:
void something(Base& b){}
};
int main()
{
Base b;
b.something(Base());
return 0;
}
когда я компилирую код, я получил следующую ошибку:
abc.cpp:12:20: error: no matching function for call to ‘Base::something(Base)’
abc.cpp:12:20: note: candidate is:
abc.cpp:6:7: note: void Base::something(Base&)
abc.cpp:6:7: note: no known conversion for argument 1 from ‘Base’ to ‘Base&’
но когда я заменил b.something(Base()) на
Base c;
b.something(c);
ошибка ушла, мне интересно, почему??? разве они не имеют один и тот же тип? Это имеет значение только для того, как я пишу это, но смысл должен быть тем же самым.
Спасибо, ребята!