Я новичок в C++/CLI и испытываю некоторые проблемы, пытающиеся переопределить метод Equal базового класса Object. Я получаю следующую ошибку предупреждения компиляции для следующего кода. Как это можно исправить?C++/CLI: как переопределить метод Equal класса Object
Warning 1 warning C4490: 'override' : incorrect use of override specifier; 'Test::Sample::Equal' does not match a base ref class method c:\project\code\Sample.h 18
Error 2 error LNK2022: metadata operation failed (80131187) : Inconsistent method declarations in duplicated types (types: Test.Sample; methods: Equal): (0x06000002). Sample.obj
Редактировать 3: я изменил «равно» к «Равно», удаляется переопределение ключевое слово в исходном файле, но ошибки 2 до сих пор стоит.
// Заголовочный файл
public ref class Sample : public Object
{
public:
int someVariable;
virtual bool Equals(Object^ obj) override;
virtual int GetHashCode() override;
}
// Исходный файл
bool Sample::Equals(Object^ obj)
{
if (obj == nullptr || GetType() != obj->GetType())
return false;
Sample^ p = dynamic_cast<Sample^>(obj);
return (someVariable == p->someVariable);
}
int Sample::GetHashCode()
{
return GetHashCode();
}
Реализация GetHashCode должны использовать одни и те же переменные, которые вы используете в реализации Equals, такие как:
int Sample::GetHashCode() { return someVariable->GetHashCode(); }
–