這是從屬類頭C++構造繼承工作不正常
#ifndef TransHeader
#define TransHeader
#include <string>
#include "CipherHeader.h"
using namespace std;
class Trans : public Cipher {
public:
Trans(string filenameIn);
const static int MAXSIZE = 10000;
void createArray();
void transEncrypt();
void transDecrypt();
private:
//string Key;
//string inputData;
char dataArray[MAXSIZE][MAXSIZE];
};
#endif
這是繼承報頭
#ifndef CipherHeader
#define CipherHeader
#include <string>
using namespace std;
class Cipher {
public:
const static int MAXSIZE = 10000;
Cipher(string filenameIn);
void getKey();
void flagHandle(string);
string Key;
string inputData;
string filename;
string flags;
string readFile();
void writeFile();
private:
};
#endif
問題是後我調用基構造
Trans::Trans(string filenameIn) : Cipher(filenameIn) {}
我不能像這樣在普通文件中調用構造函數:
#include "Trans.cpp"
int main() {
string a = "asdf";
Trans *c = new Trans(a);
}
這導致了這個錯誤:
g++ test.cpp -o test.out
/tmp/ccbuqMYr.o: In function `Trans::Trans(std::basic_string<char, std::char_traits<char>, std::allocator<char> >)':
test.cpp:(.text+0x35): undefined reference to `Cipher::Cipher(std::basic_string<char, std::char_traits<char>, std::allocator<char> >)'
/tmp/ccbuqMYr.o: In function `Trans::Trans(std::basic_string<char, std::char_traits<char>, std::allocator<char> >)':
test.cpp:(.text+0xa5): undefined reference to `Cipher::Cipher(std::basic_string<char, std::char_traits<char>, std::allocator<char> >)'
collect2: ld returned 1 exit status
用密碼代替反式工作得很好,並運行。我嘗試了我所知道的一切,過度搜索,無法弄清楚這個錯誤。其他設計問題等將在稍後處理,這是我的主要問題。請幫忙。
編輯::密碼
Cipher::Cipher(string filenameIn) {
filename = filenameIn;
readFile();
getKey();
}
的定義
這是一個鏈接錯誤。你要麼錯過了'Cipher :: Cipher()'或者定義所在的'.cpp'文件的定義。 – iammilind
響應很遲,但如果我沒記錯的話,這個人解決了我的問題。 –