MAIN.CPP :는 부모 클래스의 생성자가 호출되도록
options my_options;
tree my_trees;
CODON_alphabet my_alphabet(1);
likelihood_engine my_likelihood(&my_options, &my_trees, &my_sites);
CODON_M0 m0(&my_trees, &my_alphabet, &my_likelihood);
CODON_alphabet 부모 클래스 알파벳으로이 클래스입니다. 어떤 이유로 CODON_M0 객체를 만들면 알파벳과 CODON_alphabet 클래스의 생성자가 각각 두 번 호출됩니다. 이것은 CODON_M0 생성자의 첫 번째 행이 적중되기 전에 발생합니다. 누가 이런 일이 일어나고 있는지 파악할 수있는 올바른 방향을 알려줄 수 있습니까? 중요한 정보가 누락되면 알려주십시오. 감사.
편집 : 죄송합니다. 여기있는 모든 사람이 내 마음을 읽을 수 있다고 생각했습니다. 가능한 한 작게 줄인 코드가 있지만 원치 않는 생성자가 여전히 호출됩니다.
class CODON_M0: public CODON_model
{
public:
CODON_M0(tree* tree_ptr, CODON_alphabet* alpha_ptr, likelihood_engine* like_ptr)
}
class CODON_model: public model
{
public:
CODON_alphabet* my_alphabet;
CODON_model(tree* tree_ptr, CODON_alphabet* alpha_ptr, likelihood_engine* like_ptr)
}
class model
{
public:
model() {}
}
class CODON_alphabet: public alphabet
{
public:
CODON_alphabet()
{
cout << "\n\n\n *** CODON_alphabet constructor called. *** \n\n\n";
}
}
class alphabet
{
public:
alphabet()
{
cout << "\n\n\n *** alphabet constuctor called. *** \n\n\n";
}
}
나는 GDB의 코드를 단계별로 그리고 난 생성자에 CODON_M0 객체와 단계를 생성 선을 쳤을 때, 나는 알파벳과 CODON_alphabet 생성자가 두 번 호출 된 메시지를 참조하십시오. 왜?
"CODON_M0"에 대한 코드가 없어도 적어도 추측 할 수 있습니다. 이상적으로, [최소 테스트 케이스] (http://sscce.org)를 게시하십시오. –