[英].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.