c++构造函数继承不能正常工作
C++ Constructor inheritance not working correctly
这是依赖的类头
#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代替Trans工作得很好并且运行。我已经尝试了我所知道的一切,在谷歌上搜索了很多次,但还是无法找出这个错误。其他设计问题等稍后再处理,这是我的主要问题。请帮助。
编辑::密码的定义
Cipher::Cipher(string filenameIn) {
filename = filenameIn;
readFile();
getKey();
}
规则1 -永远不要在头文件中使用'using'语句!: -)
你需要调用基类构造函数。
:
Trans::Trans(const std::string &f) // notice pass by reference
:Cipher(f)
{
}
您需要构建中的所有源文件:
g++ test.cpp trans.cpp cipher.cpp -o test
这会给你一个新的错误,因为你从test.cpp
中包含了trans.cpp
源文件,而不是头文件-修复它,它应该没有进一步的问题。
相关文章:
- QSqlquery prepare()和bindvalue()不工作
- 导入库可以跨dll版本工作吗
- 以螺旋方式打印矩阵的程序.(工作不好)
- 对象指针在c++中是如何工作的
- 为什么在Windows上的VS 2019和Clang 9中"size_t"在没有标题的情况下工作
- VSOMEIP-2个设备之间的通信(TCP/UDP)不工作
- 为字符串中每 N 个字符插入空格的函数没有按照我认为的方式工作?
- C++为线程工作动态地分割例程
- 为什么我的 std::ref 无法按预期工作?
- 布尔比较运算符是如何在C++中工作的
- SampleConsensusPrerejective(ext.RANSAC)是如何真正工作的
- 不确定要在我的main中放入什么才能使我的代码正常工作
- 为什么std::condition_variable notify_all的工作速度比notify_one快(对于随机请
- <<操作员在下面的行中工作
- 有人能解释一下为什么下界是这样工作的吗C++的
- ExtractIconEx:可以工作,但偶尔会崩溃
- C++中的memset函数工作不正常
- 为什么STD ::计数将常数传递给Lambda,而不是在弦上工作时而不是字符
- sdl软件渲染器不工作,工作在硬件加速的一个
- C++程序已停止工作-求解常微分方程