我正在编写一个enigma机器,并且在为我的机器类制作构造函数时遇到问题.尽管必须在构造函数的参数中提供一个插板,但似乎正在调用一个插件板的构造函数.这是错误
Machine.cpp: In constructor ‘Machine::Machine(std::list<Rotor>, Plugboard)’:
Machine.cpp:6:48: error: no matching function for call to ‘Plugboard::Plugboard()’
Machine::Machine(list<Rotor> rots, Plugboard pb) {
Run Code Online (Sandbox Code Playgroud)
Machine.cpp:
#include "Machine.h"
using namespace std;
Machine::Machine(list<Rotor> rots, Plugboard pb) {
plugboard = pb;
rotors = rots;
}
//give c's alphabet index
int Machine::getPosition(char c) {
if (c >= 'A' && c <= 'Z') {
return c - 'A';
}
else {
cout << "not an accepted character";
return -1;
}
}
//give letter at index i in alphabet
char …Run Code Online (Sandbox Code Playgroud) 我编码一个enigma机器并且在我的向量中使用元素时遇到问题,只将分段错误作为错误.我需要在单个字符的向量中使用每个转子中的一个函数,在迭代器移动时转换字符,一次向前遍历列表,一次向后转换.我已经注释掉其他转换以隔离问题.
Machine.cpp
#include "Machine.h"
using namespace std;
Machine::Machine(const vector<Rotor>& rots, const Plugboard & pb)
: rotors(rots), plugboard(pb) {}
// give c's alphabet index
int Machine::getPosition(char c) {
if (c >= 'A' && c <= 'Z') {
return c - 'A';
} else {
cout << "not an accepted character";
return -1;
}
}
// give letter at index i in alphabet
char Machine::atPosition(int i) {
assert(i >= 0 && i <= 25);
return "ABCDEFGHIJKLMNOPQRSTUVWXYZ" [i];
}
char Machine::encode(char c) { …Run Code Online (Sandbox Code Playgroud)