г ++ жалуется на
myclass.cxx:185: error: no matching function for call to 'IMyInterface::doSomething(const SomeClass*, unsigned int)'
IMyInterface.h:34: note: candidates are: virtual void IMyInterface::doSomething(const SomeClass*&, unsigned int)
когда я звоню
m_instanceOfInterface->doSomething((const SomeClass*)0,(unsigned int)1);
Есть какие-нибудь указатели на почему? Мне кажется, что g ++ видит точно такую же сигнатуру между тем, что объявлено, и тем, что вызывается, но все же жалуется на то, что не найдена соответствующая функция.
В этом же контексте я могу вызвать другую функцию IMyInteface
, IMyInterface::doSomethingElse(float& p)
. Так почему-то const
это проблема?
Я не передавал указатель NULL и не приводил константное целое число просто для забавы ... изначально у меня есть
m_instanceOfInterface->doSomething((const SomeClass*)m_someDerivedClass,m_anInteger);
и получил ту же ошибку. Поэтому я решил прояснить ситуацию с g ++, приведя некоторые явные аргументы. Я могу заверить вас, что указатель NULL НЕ является проблемой - хотя по понятным причинам мы все немного сжались, увидев, что NULL передается с const
:)