问题:
1,vc里如何在函数中把CArray<CString,CString>做为返回值呢,
2,别的函数如何调用这种返回值的函数呢
比如:
CArray<CString,CString>myArray;//声明类型。
myArray& getValue()
{
myArray str;
.......
.
return str;//直接返回str好象不行。但别的函数如何调用getValue();呢
比如:
CArray<CString,CString>myArray;
myArray mm = getValue();//不行的。我改为:
myArray mm;
mm.Copy(getValue());//老提示严重错误
高手帮助下。解决给分。
1,vc里如何在函数中把CArray<CString,CString>做为返回值呢,
2,别的函数如何调用这种返回值的函数呢
比如:
CArray<CString,CString>myArray;//声明类型。
myArray& getValue()
{
myArray str;
.......
.
return str;//直接返回str好象不行。但别的函数如何调用getValue();呢
比如:
CArray<CString,CString>myArray;
myArray mm = getValue();//不行的。我改为:
myArray mm;
mm.Copy(getValue());//老提示严重错误
高手帮助下。解决给分。
fun(CArray <CString,CString>& array, ...)
CArray <CString,CString>myArray;//声明类型。
myArray& getValue()
{
myArray str;
...
返回类型怎么是一个变量名呢?
应该这样吧:
typedef CArray <CString,CString> myArray;另外,返回一个局部变量的引用,绝对是不可以的,函数返回之后,对象就被释放了,那么它的引用也是无效的。运行时肯定出错。
void getValue(CStringArray & strArr)
{
...
1、用全局的 CStringArray 或 CArray<CString,CString>,个人觉得这个似乎前面的更方便一些;
2、用传引用代替传值。这样既可以达到返回 CStringArray 或 CArray<CString,CString> 的目的,又可以避免对象拷贝,提高运行效率。示例://调用的地方
CStringArray arMyArray;
CallMyFunc(arMyArray);//函数体
BOOL CallMyFunc(CStringArray& ar)
{
ar.Add(_T("haidejintou"));
ar.Add(_T("海的尽头"));
//你其他的检查代码 return TRUE;
}
正确的用法应该是:void getValue(myArray& array)
{
.....
}调用者使用的方法是:myArray anArray;
getValue(anArray);需要你代码中这种返回引用的方式的唯一场景是类成员变量是个array,你需要返回一个array的引用。如果这是一个临时产生的array,这自然是不可用引用作为返回类型的(这不特殊于你这个问题,而是所有的临时变量都不能返回引用)
高见。