我正在尝试将两个cpp文件 - MIPSConversion.cpp
和TestMIPSConversion.cpp
- 连接到同一个头文件 - MIPSConversion.h
。但是,当我尝试从readInTheFile()
(位于MIPSConversion.cpp
)调用方法main()
(位于TestMIPSConversion.cpp
)时,我收到错误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);
}
答案 0 :(得分:3)
您需要在main中创建MIPSConversion的对象。然后你可以使用它的成员函数readInTheFile()。如下所示:
<?xml version="1.0" encoding="utf-8" ?>
<resources>
<style name="myTheme" parent="@android:style/Theme.Material.Light">
<item name="android:listViewStyle">@style/ListViewStyle.Light</item>
</style>
<style name="ListViewStyle.Light" parent="@android:style/Widget.ListView">
<item name="android:listSelector">@android:color/transparent</item>
</style>
</resources>
答案 1 :(得分:1)
readInTheFile
是static
的非MIPSConversion
成员,因此您必须创建一个MIPSConversion
对象,可以在其上调用readInTheFile
:
MIPConversion mipsConversion;
mipsConversion.readInTheFile();
如果您想要mipsConversion
readInTheFile
或其他函数存储的数据实际上没有数据,则可以完全删除mipsConversion
类,并使{{1文件范围(非成员)函数。或者,如果您对readInTheFile
课程有其他用途,但MIPSConversion
无需访问其数据,则可以readInTheFile
readInTheFile
中的MIPSConversion
static
,这意味着即使没有MIPSConversion
的对象实例也可以调用它,如:
MIPSConversion::readInTheFile();
答案 2 :(得分:1)
您目前已将readInTheFile声明为MIPSConversion类的成员函数,这意味着您需要MIPSConversion类的实例才能实际调用该函数。您可以通过多种方式解决此问题。
将该函数声明为static。这意味着可以在没有MIPSConversion实例的情况下调用该函数(考虑到实现,这似乎是您正在寻找的)。容易做到,
class MIPSConversion
{
public:
MIPSConversion();
~MIPSConversion();
static void readInTheFile();
};
然后当你调用该函数时,在它前面添加类名
MIPSConversion::readInTheFile();
创建类的实例。只需创建一个实例,然后从中调用该函数。
MIPSConversion conversionVariable;
conversionVariable.readInTheFile();
如果你想完全跳过类的原理图(也许有一个&#34;实例&#34;的MIPSConversion没有意义,只需用Namespace替换类并遵循相同的调用约定与静态函数一样。
namespace MIPSConversion
{
void readInTheFile();
}
和TestMIPSConversion.cpp
MIPSConversion::readInTheFile();