2017-07-14 72 views
-2

Visual Studio在auto**上显示错误。为什么?C++ Return Auto Array

我的代码:

auto** getMetaInfo(SQLHANDLE sqlStmtHandle) 

{ 
    SQLCHAR colName[256]; 
    SQLSMALLINT colNameLen; 
    SQLSMALLINT dataType; 
    SQLSMALLINT numDecimalDigits; 
    SQLSMALLINT allowsNullValues; 
    SQLUINTEGER columnSize; 
    SQLSMALLINT columns = getrows(); 
    auto retArray = new SQLCHAR[columns][2](); 
    for (int i = 1; i <= columns; i++) 
    { 
     SQLRETURN retCode = SQLDescribeColA(sqlStmtHandle, i, colName, 255,  &colNameLen, &dataType, &columnSize, &numDecimalDigits, &allowsNullValues); 
     retArray[i][0] = dataType; 
     retArray[i][1] = *colName; 
    } 
} 
+3

你甚至没有在你的函数中使用return语句 – AndyG

+0

不要告诉我们你在没有告诉我们它是什么时得到一个错误。另外,也许可以在发布代码之前额外多考虑一下代码,以便发现明显的错误:如果没有返回任何内容,则无法推断返回类型......此外,它有助于解释您正在尝试执行的操作,而不仅仅是倾销代码,并假设我们会弄明白。这些可能只是我可以用这个问题指出的几个问题。请阅读[如何提问](https://stackoverflow.com/help/how-to-ask)。 –

回答

0

编译器就无法推断返回类型(注意,2D阵列不是双指针,参见this answer例如)。把auto而不是auto**,添加return声明,它应该工作。