2014-02-09 53 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