2012-03-23 133 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

相關問題