2017-07-14 69 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聲明,它應該工作。