我的课程包含2个功能;一个用于设置用户数据,另一个用于将此数据写入文件。
这是头文件:
class MyClass
{
public:
void setData(string);
void write(fstream&);
private:
string data;
};
MyClass.cpp
:
#include "MyClass.h"
#include<iostream>
#include<fstream>
#include<string>
using namespace std;
void MyClass::setData(string input)
{
data = input;
}
void MyClass::write(fstream &outfile)
{
outfile << data << endl;
}
这是主要功能:
#include"MyClass.h"
#include<iostream>
#include<fstream>
#include<string>
using namespace std;
void main()
{
MyClass ob;
string input;
fstream ofile("D:/Blank.txt", ios::out);
cout << "Enter the data .... " << endl;
getline(cin, input);
ob.setData(input);
ob.write(ofile);
}
它总是给我语法错误和其他一些错误,我无法弄清楚这段代码的错误在哪里,我知道我在不使用类的情况下尝试了这段代码并且运行良好。
错误讯息:
Error 2 error C2061: syntax error : identifier 'fstream' c:\users\ahmed\documents\visual studio 2013\projects\files\files\myclass.h 6 1 Files
Error 8 error C2061: syntax error : identifier 'fstream' c:\users\ahmed\documents\visual studio 2013\projects\files\files\myclass.h 6 1 Files
Error 1 error C2061: syntax error : identifier 'string' c:\users\ahmed\documents\visual studio 2013\projects\files\files\myclass.h 5 1 Files
Error 7 error C2061: syntax error : identifier 'string' c:\users\ahmed\documents\visual studio 2013\projects\files\files\myclass.h 5 1 Files
Error 12 error C2065: 'data' : undeclared identifier c:\users\ahmed\documents\visual studio 2013\projects\files\files\myclass.cpp 9 1 Files
Error 14 error C2065: 'data' : undeclared identifier c:\users\ahmed\documents\visual studio 2013\projects\files\files\myclass.cpp 14 1 Files
Error 3 error C2146: syntax error : missing ';' before identifier 'data' c:\users\ahmed\documents\visual studio 2013\projects\files\files\myclass.h 9 1 Files
Error 9 error C2146: syntax error : missing ';' before identifier 'data' c:\users\ahmed\documents\visual studio 2013\projects\files\files\myclass.h 9 1 Files
Error 11 error C2511: 'void MyClass::setData(std::string)' : overloaded member function not found in 'MyClass' c:\users\ahmed\documents\visual studio 2013\projects\files\files\myclass.cpp 8 1 Files
Error 13 error C2511: 'void MyClass::write(std::fstream &)' : overloaded member function not found in 'MyClass' c:\users\ahmed\documents\visual studio 2013\projects\files\files\myclass.cpp 13 1 Files
Error 5 error C2660: 'MyClass::setData' : function does not take 1 arguments c:\users\ahmed\documents\visual studio 2013\projects\files\files\main.cpp 14 1 Files
Error 6 error C2660: 'MyClass::write' : function does not take 1 arguments c:\users\ahmed\documents\visual studio 2013\projects\files\files\main.cpp 16 1 Files
Error 4 error C4430: missing type specifier - int assumed. Note: C++ does not support default-int c:\users\ahmed\documents\visual studio 2013\projects\files\files\myclass.h 9 1 Files
Error 10 error C4430: missing type specifier - int assumed. Note: C++ does not support default-int c:\users\ahmed\documents\visual studio 2013\projects\files\files\myclass.h 9 1 Files
答案 0 :(得分:0)
问题:在你的MyClass.h中,你使用的是你不包含的课程。将它们包含在MyClass.h中
MyClass.h:
#include<iostream>
#include<fstream>
#include<string>
using namespace std;
class MyClass
{
public:
void setData(string);
void write(fstream&);
private:
string data;
};
在MyClass.cpp中,您不需要包含它们,只需要包含MyClass.h。
MyClass.cpp:
#include "MyClass.h"
void MyClass::setData(string input)
{
data = input;
}
void MyClass::write(fstream &outfile)
{
outfile << data << endl;
}
我不确定你为什么要返回void,但这可能是问题的根源,具体取决于你的编译器。在我的计算机中,我使用了g ++,这是一个问题。我必须将其更改为返回int
并最后添加return 0;
。也许你也可以。
Main.cpp的
#include"MyClass.h"
#include<iostream>
#include<fstream>
#include<string>
using namespace std;
int main()
{
MyClass ob;
string input;
fstream ofile("D:/Blank.txt", ios::out);
cout << "Enter the data .... " << endl;
getline(cin, input);
ob.setData(input);
ob.write(ofile);
return 0;
}
现在,它可以工作,因为它在我的电脑上工作。 :)