2014-02-09 81 views
-1

我在我的.cpp文件中得到了一小段代碼的運行前錯誤。C++,Visual Studio快速獲取奇怪的運行前錯誤

iFileName突出顯示並且顯示「Error:this declaration has no storage class or instance type。」。

iFileNameiWidth之間的逗號說:「錯誤:預期的聲明」

右括號說「錯誤:預期的聲明」

#include <iostream> 
#include <fstream> 

#include "BMPCanvas.h" 
#include "Fractal.h" 

using namespace std; 

BMPCanvas(string iFileName, int iWidth, int iHeight){ 
    filename = iFileName; 
    width = iWidth; 
    height = iHeight; 
} 

有誰知道爲什麼我會得到有錯誤?

+0

BMPCanvas :: BMPCanvas? – willll

+0

'#include '? –

+0

@willll當我這樣做,錯誤消失,但'fileName'成爲「錯誤:標識符」fileName「未定義」 – user2726232

回答

2

你需要像這樣定義構造函數:

BMPCanvas::BMPCanvas (string iFileName, int iWidth, int iHeight) 

此外,你應該添加一個#include <string>

+0

這並沒有幫助,除此之外,命名空間標準覆蓋字符串? (沒有冒犯,我只是新的C++) – user2726232

+1

@ user2726232不,不同類型的std命名空間在不同的文件中。你應該包括必要的文件。 – Lazarus

+0

BMPCanvas是一個構造函數,所以在那裏添加一個名字將無濟於事 – user2726232

-1

嘗試使用字符串標題。

#include <string.h> 
+0

這並沒有解決問題 – user2726232

0

首先,你必須包括string頭。沒有它,string不被識別爲類型名稱,而string iFileName未被識別爲正確的聲明。這就是您稱之爲「運行前」錯誤的原因。

其次,

BMPCanvas(string iFileName, int iWidth, int iHeight) { 

不是有效的函數聲明。 C++中的函數聲明必須指定返回類型。允許省略返回類型的唯一函數是構造函數,析構函數和轉換操作符。沒有一個是你的。

+0

我確實打算它是一個構造函數,我試着讓它成爲'BMPCanvas :: BMPCanvas'如果你看看評論在這個問題上。如果因其他原因無效,請告訴我爲什麼? – user2726232

+0

@ user2726232:發生了什麼?同樣,你的代碼中至少有兩個錯誤。你必須解決*兩者*。修復它們,然後回報。 – AnT

+0

我加了'#include '無濟於事。我不知道根據你的其他問題是什麼。我的構造函數有什麼問題? – user2726232