【问题标题】:C++ Return Auto ArrayC++ 返回自动数组
【发布时间】:2017-07-14 13:36:38
【问题描述】:

Visual Studio 在auto** 上显示错误。为什么?

我的代码:

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;
    }
}

【问题讨论】:

  • 你的函数中甚至没有return 语句
  • 不要告诉我们您遇到了错误而不告诉我们它是什么。此外,也许在发布之前多花一分钟左右的时间考虑一下您的代码,以意识到明显的错误:如果没有返回任何内容,则无法推断返回类型......此外,它有助于解释 what 您正在尝试做的事情,而不仅仅是转储代码并假设我们会弄明白。这些可能只是我可以用这个问题指出的几个问题。请阅读How to Ask。

标签: c++ auto


【解决方案1】:

编译器无法推断返回类型(请注意,二维数组不是双指针,例如参见this answer)。将auto 替换为auto**,添加return 语句,它应该可以工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-11
    • 1970-01-01
    • 2012-08-16
    相关资源
    最近更新 更多