获取错误:new-declarator中的表达式必须具有整数或枚举类型C ++

时间:2012-03-23 18:25:39

标签: c++ sorting types new-operator file-io

我不明白为什么我收到这个错误。我之前使用过相同的代码,它没有给我带来任何问题,但现在由于某些原因我得到了一个错误。

            outputf3 << "The sorted list is as follows: \n\n";
            sorting = new float [function.sort()]; // Here is where the error is.
            for (i=0; i < length ; i ++)            
            {
            outputf2 << "\n" << sorting[i] ;
            }

由于某种原因,它说的是 error: expression in new-declarator must have integral or enumeration type

但我在程序的前一部分使用了同样的东西。

           inputs = new float[length];
           inputf.clear();
           inputf.seekg(0, std::ios_base::beg);

我根本不知道它为什么会这样做。 我正在做的是从文件中读取随机数,然后在函数的另一部分中对它们进行排序,并将它们写入输出文件。

2 个答案:

答案 0 :(得分:1)

你为什么这么想:

inputs = new float[length];

相同
sorting = new float [function.sort()];

除非function是一个类实例,并且sort返回一个整数类型,否则它确定无法工作。

声明:

Type* t = new Type[x];

动态分配x类型的Type个对象。很明显为什么x必须是整数类型。

编辑:根据你的评论:

要分配的尺寸需要为整数类型,但您返回float。但即便如此,它也没有意义。您需要返回inputs的大小。

答案 1 :(得分:-1)

我要走出去,说function.sort()返回void。意思是这一行:

sorting = new float [function.sort()];

与写作相同......

sorting = new float [void];

没有任何意义。你可能想要function.sort()工作的长度吗?