Это заголовок зависимого класса
#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
замена Trans на Cipher работает просто отлично и работает. Я перепробовал все, что знаю, слишком много гуглил и не могу понять эту ошибку. Другие проблемы дизайна, т. Д. Будут рассмотрены позже, это моя главная проблема. Пожалуйста, помогите.
РЕДАКТИРОВАТЬ :: определение шифра
Cipher::Cipher(string filenameIn) {
filename = filenameIn;
readFile();
getKey();
}