这是从属类头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
响应很迟,但如果我没记错的话,这个人解决了我的问题。 –