分配具有主要argoment类型的数组的问题

时间:2017-07-27 08:39:54

标签: c++ casting dynamic-allocation

我应该创建一个以argoment为主的主体 “int main(int argc,char * argve [])” 第一个是数组的类型(可以是“int / long / char”),seconed是大小,我需要根据选择的类型分配数组 我很容易得到atoi功能的大小 但无法弄清楚如何将类型转换为选择类型的正确指针 我简单地不明白这种铸造是如何工作的,以及如何正确地为每种类型铸造它,
关于如何做到这一点的任何解释?

这就是我到目前为止所得到的

int main(int argc, char* argv[])
{
    int size = atoi(argv[2]);


    if (strcmp(argv[1], "int") == 0)
    {
        int* arr = nullptr;
    }
    if (strcmp(argv[1], "long") == 0)
    {
        long* arr = nullptr;
    }
    if (strcmp(argv[1], "char") == 0)
    {
        char* arr = nullptr;
    }

}

2 个答案:

答案 0 :(得分:1)

您可以使用template创建新功能,并从main调用它:

template <class T>
int realmain(int size)
{
    T *arr = new T[size];
    //whatever you want to do

    delete []arr;
    return 0;
}

int main(int argc, char* argv[])
{
    int size = atoi(argv[2]);


    if (strcmp(argv[1], "int") == 0)
    {
        return realmain<int>(size);
    }
    if (strcmp(argv[1], "long") == 0)
    {
        return realmain<long>(size);
    }
    if (strcmp(argv[1], "char") == 0)
    {
        return realmain<char>(size);
    }
}

答案 1 :(得分:0)

它的作用是因为变量的范围。你的3个$.ajax('readTCP.php', { type: 'POST', cache: false, async: false, dataType: 'json', success: function(data){ drawStatus(); $('.statustext').text('Status: ' + data); }, error: function() { console.error("fehler") } }); 变量是3个不同块中的块作用域,因此即使它们共享相同的名称,编译器也会将它们视为3个不同的变量,因此它们可能属于不同的类型。

话虽如此,它在现实世界的代码中并不是一种好的做法,因为它为人类读者增加了不必要的复杂性。