跟进我之前的问题。
谁能解释为什么以下代码编译没有任何错误:
typedef array<VdbMethodInfo^> MethodArray;
typedef array<VdbParameterInfo^> ParameterArray;
ParameterArray^ parameters = gcnew ParameterArray {
gcnew VdbParameterInfo("name", "string", "Paul")};
MethodArray^ methods = gcnew MethodArray {
gcnew VdbMethodInfo("createTable", parameters)
};
然而这给了我“错误C2440:'初始化':无法从'VdbParameterInfo ^'转换为'VdbMethodInfo ^”
typedef array<VdbMethodInfo^> MethodArray;
typedef array<VdbParameterInfo^> ParameterArray;
MethodArray^ methods = gcnew MethodArray {
gcnew VdbMethodInfo("createTable", gcnew ParameterArray {
gcnew VdbParameterInfo("name", "string", "Paul")};
)
};
我所做的只是尝试将参数数组“嵌套”在方法数组初始化中......不直接介意 - VdbMethodInfo 的构造函数将 ParameterArray 作为第二个参数。
这似乎暗示托管 C++ 数组初始化期望任何递归嵌套具有相同的类型......(即我认为这一定是一个错误)
相关问题:这里