【问题标题】:How can I allocate memory and return with in c++ with function?如何在 C++ 中使用函数分配内存并返回?
【发布时间】:2016-02-14 17:32:00
【问题描述】:

我在 C++ 中创建了一个表。我有一堂餐桌技巧课。我想用函数为方表获取内存,但我不知道我应该如何编写构造函数和用于内存分配的函数。

我从键盘获取大小,我想为分配内存的其他函数提供此返回语句。表格必须是二维数组[][] 或矩阵。

#include <iostream>

using namespace std;

class Table {
    unsigned int size;

    public:
        unsigned int GetTableSize();
        unsigned int *GetMemory(unsigned int);
};

unsigned int Table::GetTableSize() {
    cout << "Give size: " << endl;
    cin >> size;
    return size;
}

unsigned int *Table::GetMemory(unsigned int s){
    s = size;
    return new unsigned int[s * s];
}

int main()
{
    Table tab;
    tab.GetTableSize();
    tab.GetMemory();

    return 0;
}

*GetMemory 函数必须返回表的内存大小。我有 tab.GetMemory 的问题。我也试过 tab.*GetMemory。

tab*GetMemory:QT 创建者说:GetMemory 未声明。 tab.GetMemory:Qt 创建者说:调用 'Table::Getmemory' 的函数不匹配。

【问题讨论】:

  • GetTableSizeGetMemory 是两个毫无意义的成员函数。然后还有s = size;,不知道函数参数和返回值的用途。选择book
  • “我有一堂带表技能的课”不解析。不清楚你在问什么。请重写此代码,以便更清楚地表达您的问题。
  • GetTableSize 从键盘获取大小。之后我想为表分配内存。表是一个数组。我需要大小 * 大小(乘法)的内存,因为它是一个正方形。
  • 例如 GetTable size 从 cin 获取 5。所以大小 = 5。5 行和 5 列。我需要 5 * 5 unsigned int 的内存。

标签: c++ qt memory memory-management constructor


【解决方案1】:

首先你的问题不是很清楚,我想告知你在 Qt 中遇到的错误。

在您的代码中,您没有在下面的行中传递任何值 "tab.GetMemory();"

您的函数如何期望一个无符号整数值。

我想建议你可以修改下面的代码sn-p如下

您的代码:

unsigned int *Table::GetMemory(unsigned int s){
    s = size;
    return new unsigned int[s * s];
}

修改代码:

unsigned int *Table::GetMemory(){
    //s = size;
    return new unsigned int[size * size];
}

希望有所帮助。

【讨论】:

  • 是的。这样可行。抱歉,误解了。我现在才学编码。
  • 你至少应该提到这是一个非常糟糕的设计。 Table 应该管理它的资源,而不仅仅是提供一个方法来返回指向必须在类之外管理的某个数组的指针。谁来删除数组?
  • 你说得对bi303,他在那个代码中遗漏了很多东西,但正如他已经提到的,他现在只是在学习编码。我相信随着时间的推移,他也会学会这些。
  • 我需要学习很多东西。那么你是说Table类不能包含内存分配和GetTableSize的东西吗?
猜你喜欢
  • 1970-01-01
  • 2017-06-16
  • 1970-01-01
  • 2010-12-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-02
  • 2010-11-26
相关资源
最近更新 更多