Я хочу преобразовать свой код на C++ в код Delphi. Но я получаю эту ошибку от компилятора Delphi: Declaration of 'callFunction<T>' differs from previous declaration
.
Мой C++ код:Delphi Generics: E2037: Декларация 'XXX' отличается от предыдущего объявления
class Example
{
public:
template<typename T>
static void callFunction(const T value);
};
template<>
void Example::callFunction<int>(const int value)
{
cout << "Integer = " << value << endl;
}
template<>
void Example::callFunction<double>(const double value)
{
cout << "Double = " << value << endl;
}
template<>
void Example::callFunction<char*>(char* const value)
{
cout << "Char* = " << value << endl;
}
int main()
{
Example::callFunction<int>(17);
Example::callFunction<double>(3.8);
Example::callFunction<char*>("Hello");
return 0;
}
Этот код выполняется успешно. Но мой код Object Pascal не работает.
Мой Delphi код:
type
Example = class
public
class procedure callFunction<T>(const val: T);
end;
{ Example }
class procedure Example.callFunction<Integer>(const val: Integer);
begin
Writeln('Integer');
end;
class procedure Example.callFunction<Double>(const val: Double);
begin
Writeln('Double');
end;
class procedure Example.callFunction<PChar>(const val: PChar);
begin
Writeln('PChar');
end;
begin
Example.callFunction<Integer>(17);
Example.callFunction<Double>(3.8);
Example.callFunction<PChar>('Hello');
Readln;
end.
Как я могу конвертировать мой C++ код в Delphi код? Какова причина ошибки? Могу ли я преобразовать свой код в Delphi, как это? Благодарю.
Шаблоны и дженерики совершенно разные. Дженерики Delphi не имеют ничего похожего на специализированную специализацию на C++. Это выглядит как искусственная проблема, созданная с целью задать вопрос. Поэтому вам может потребоваться сделать его более реалистичным, чтобы получить хорошие рекомендации. –