在我的 C++/CLI 代码中,我有大约 20 个不同的类。我已经重载了一个print
函数 20 次来处理每个类的一个实例。现在我需要另外支持这 20 个类中的每一个的对象数组,并且讨厌必须编写另外 20 个重载,这些重载大多是彼此的逐字副本。例如,请参见下文:
void print(int i){
Console::WriteLine("Integer: {0}", i);
}
void print(String ^s){
Console::WriteLine(L"Hello " + s);
}
generic <typename T>
void print(array<T> ^ts){
for(int i = 0, n = ts->Length; i < n; ++i)
print(ts[i]);
}
int main(array<System::String ^> ^args)
{
array<String^> ^s = gcnew array<String^>{ L"apple", L"ball", L"car" };
print(s);
Console::WriteLine(L"Hello World");
return 0;
}
但上述导致以下错误:
error C2665: 'print' : none of the 2 overloads could convert all the argument types
为什么不编译?我想做的事情的替代方法是什么?