我必须写下我必须制作DFA的这个项目。我无法确定如何编写我的构造函数以避免出现以下错误no matching function for call to 'DFA::DFA(int&, char [2], char [4][2], char&, char [1])'|
。任何帮助都很受欢迎。下面是代码:DFA构造函数错误,有效声明该怎么办?
#include <iostream>
#include<cstring>
using namespace std;
class DFA
{
int number_of_states;
char* alphabet;
char** transition_table;
char start_state;
char* final_states;
public:
DFA(int,char*,char**,char,char*);
};
DFA::DFA(int snumber_of_states,char* salphabet,char** stransition_table,char sstart_state, char* sfinal_states)
{
number_of_states= snumber_of_states;
int l1=strlen(salphabet);
alphabet=new char[l1+1];
for(int i=0;i<l1+1;i++)
{
alphabet[i]=salphabet[i];
}
transition_table=new char* [number_of_states];
for(int h=0;h<number_of_states;++h)
{
transition_table[h]=new char[l1+1];
}
for(int j=0;j<number_of_states;j++)
{
for(int k=0;k<l1+1;k++)
transition_table[j][k]=stransition_table[j][k];
}
start_state=sstart_state;
int l2=strlen(sfinal_states);
final_states=new char [l2+1];
for(int r=0;r<l2+1;r++)
{
final_states[r]=sfinal_states[r];
}
}
int main()
{
char start_state='0';
char final_states[1]={'3'};
int number_of_states=4;
char alphabet[2]={'a','b'};
char transition_table[4][2]={
{'1','1'},
{'2','1'},
{'0','3'},
{'3','-'}
};
DFA automaton(number_of_states,alphabet,transition_table,start_state,final_states);
}
你现在的代码实际上都是'C',而且很少有C++。我强烈建议你使用'std :: string'而不是'char *'和'std :: vector'而不是'char **'或'new char []'。否则,你将很可能有其他问题(与内存相关),比如何向构造函数发出调用要困难得多。 –
PaulMcKenzie