[英].cpp file will not link with .h file
我正在尝试将两个cpp文件MIPSConversion.cpp
和TestMIPSConversion.cpp
连接到同一头文件MIPSConversion.h
。 但是,当我尝试从main()
(位于TestMIPSConversion.cpp
)调用方法readInTheFile()
(位于MIPSConversion.cpp
)时,我得到use of undeclared identifier 'readInTheFile'
的错误use of undeclared identifier 'readInTheFile'
。 我该如何解决这个问题?
MIPSConversion.h
#include <iostream>
using namespace std;
class MIPSConversion
{
public:
MIPSConversion();
~MIPSConversion();
void readInTheFile();
};
MIPSConversion.cpp
#include <iostream>
#include <fstream>
#include "MIPSConversion.h"
using namespace std;
MIPSConversion::MIPSConversion(){}
MIPSConversion::~MIPSConversion(){}
void MIPSConversion::readInTheFile(){
string inputFileName;
char* arrayString = new char[31];
cout << "Enter the name of the file you want to import: " << endl;
inputFileName = cin;
getline(cin, inputFileName);
ifstream inputFile (inputFileName, ifstream::in);
while (inputFile.good()) {
for(int i = 0; i < 31; i++){
arrayString[i] = inputFile.get();
}
cout << arrayString;
if (inputFile.peek() == std::ifstream::traits_type::eof()){
break;
}
}
inputFile.close();
}
TestMIPSConversion.cpp
#include <iostream>
#include "MIPSConversion.h"
using namespace std;
int main()
{
readInTheFile();
return(0);
}
您需要在main中创建一个MIPSConversion对象。 然后,您可以使用其成员函数readInTheFile()。 如下所示:
MIPSConversion myObj;
myObj.readInTheFile();
readInTheFile
是一个非static
成员MIPSConversion
,所以你必须创建一个MIPSConversion
在其上调用对象readInTheFile
:
MIPConversion mipsConversion;
mipsConversion.readInTheFile();
如果实际上没有要通过readInTheFile
或其他函数存储在mipsConversion
的数据,则可以完全摆脱mipsConversion
类,并使readInTheFile
成为文件作用域(非成员)函数。 或者,如果您对MIPSConversion
类有其他用途,但readInTheFile
不需要访问其数据,则可以将readInTheFile
在MIPSConversion
但使其保持static
,这意味着即使没有MIPSConversion
的对象实例也可以调用它。 :
MIPSConversion::readInTheFile();
当前,您已将readInTheFile声明为MIPSConversion类的成员函数,这意味着您需要MIPSConversion类的实例才能实际调用该函数。 您可以通过多种方式解决此问题。
将该函数声明为静态。 这意味着可以在没有MIPSConversion实例的情况下调用该函数(考虑到实现,这似乎是您想要的)。 容易做
class MIPSConversion { public: MIPSConversion(); ~MIPSConversion(); static void readInTheFile(); };
然后,当您调用该函数时,请在其前面加上类名
MIPSConversion::readInTheFile();
创建该类的实例。 只需创建一个实例,然后从中调用该函数即可。
MIPSConversion conversionVariable; conversionVariable.readInTheFile();
如果要完全跳过类模式(使用MIPSConversion的“实例”可能没有意义,只需将类替换为Namespace并遵循与静态函数相同的调用约定。
namespace MIPSConversion { void readInTheFile(); }
并在TestMIPSConversion.cpp中
MIPSConversion::readInTheFile();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.