Я должен записать этот проект, в котором я должен сделать DFA. Мне трудно понять, как именно написать мой конструктор, чтобы не получить следующую ошибку no matching function for call to 'DFA::DFA(int&, char [2], char [4][2], char&, char [1])'|
. Любая помощь приветствуется. Вот код:
#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);
}
std::string
вместоchar*
иstd::vector<std::string>
вместоchar**
илиnew char[]
. В противном случае у вас, скорее всего, возникнут другие проблемы (связанные с памятью), которые будет гораздо сложнее понять, чем вызов конструктора. - person PaulMcKenzie   schedule 20.05.2014