如何在c ++中使用函数分配内存并返回?

时间:2016-02-14 17:32:00

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

我用c ++创建一个表。我有一个具有表技能的课程。我想获得带有函数的方形表的内存,但我不知道应该如何编写构造函数和内存分配函数。

我从键盘获得大小,我想为另一个分配内存的函数提供这个return语句。表必须是二维数组[] []或矩阵。

#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'。

1 个答案:

答案 0 :(得分:3)

首先你的问题不是那么明确,我想告诉你在Qt中遇到的错误。

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

你的函数如何期望无符号整数值。

我建议您修改以下代码段,如下所示

您的密码:

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

希望能帮助。