2012-03-23 143 views
0

我不明白为什么我收到此错误。我以前使用过相同的代码,它给了我没有问题,但现在由于某种原因,我得到一个错误。获取错误:新声明器中的表达式必须具有整型或枚举类型C++

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

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

+0

什么是'function.sort()'?它的回报价值是多少? – mfontanini 2012-03-23 18:27:57

+1

如果'function.sort()'不返回整数类型...错误是正常的 – INS 2012-03-23 18:28:02

+0

'float DSP1D :: sort() { \t int i = 0; \t int x = 0; \t \t 为(I =长度; I> = 0;我 - ) \t { \t为(X = 0; X <长度-1; X ++) \t \t { \t \t如果(输入[X ]>输入[X + 1]) \t \t \t { \t \t \t \t浮子温度=输入[X + 1]; \t \t \t \t inputs [x + 1] = inputs [x]; \t \t \t \t inputs [x] = temp; \t \t \t} \t \t} \t} \t返回*输入; }' 是function.sort,它回调输入并且类型为float – 2012-03-23 18:30:22

回答

1

你为什么认为:

inputs = new float[length]; 

相同

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

除非function是一个类实例,并且sort返回一个整数类型,否则肯定不起作用。

声明:

Type* t = new Type[x]; 

动态分配Typex对象。这很明显,为什么x必须是整数类型。

编辑:按照您的评论:

的大小来分配需求是整型,但你返回float。但即使如此,这也没有意义。您需要返回inputs的大小。

+0

我不太明白你的意思。 所以我的'function.sort()'的返回值是'inputs' 和'inputs'需要与float类型相同,对吗? 它在我的程序中早些时候陈述为 – 2012-03-23 18:50:09

+0

@TyberiusSeppala浮动不是一个整数类型。 – 2012-03-23 18:56:32

+0

那么我完全不能使用'new'? – 2012-03-23 19:05:41

-1

我要出去的肢体,并说function.sort()返回void。这意味着该行:

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

是相同的文字...

sorting = new float [void]; 

不作任何意义。你可能想要什么function.sort()正在处理的长度?

+0

不要在肢体上出去。在评论中向OP询问一个问题。 – Puppy 2012-03-23 18:36:39

+0

我正在滔滔不绝。除了无效签名以外,我从来没有见过一种排序方法。 – 2012-03-23 20:08:25

相关问题