2017-07-14 10 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

それが何であるかを伝えることなくエラーが発生したということを教えてください。また、あなたのコードを投稿する前に、あなたのコードについて考えてみてください。明白な間違いを実現する:何も返されなければ戻り値の型を推論することはできません...また、あなたがしようとしていること単にコードを投げ捨てるのではなく、われわれが把握することを前提としている。これらはおそらく、この質問で指摘できる問題のほんの一部です。 [How to Ask](https://stackoverflow.com/help/how-to-ask)をお読みください。 –

答えて

0

コンパイラは戻り型を推論することができない(例えばthis answerを参照して、2次元アレイが二重ポインタないであることに留意されたいです)。 auto**の代わりにautoと入力し、returnステートメントを追加すると正常に動作します。