c++ new 연산자 오류

https://github.com/j209446/BST_bag_class-c-/blob/master/main.cpp 제 cpp 파일입니다. VS2015에서 빌드해보니 C2668에러가 뜨면서 new연산자에서 오류가 발생하는데 왜 발생하는지 모르겠습니다.

node->set_left(new binary_tree_node<item> ) 이렇게 하면 모호하다 나오고 new binary_tree_node<item>() 이렇게 해도 모호하다하는데 어떻게 해결해야될까요?

1답변

  • binary_tree_node 의 생성자 선언에 문제가 있기 때문입니다.

    보여주신 코드에서 생성자 부분만 보면 아래와 같습니다.

    binary_tree_node();
    binary_tree_node<T>(const binary_tree_node& copy);
    binary_tree_node<T>(const T& init_data = T(), binary_tree_node* init_left = NULL, binary_tree_node* init_right = NULL);
    
    

    3번째 생성자를 보시면, 호출인자에 모두 기본값이 적용되어 있습니다.

    binary_tree_node<int>()

    라고 하면 첫번째 생성자 일 수 도 있고, 기본 값이 모두 적용된 3번 째 생성자일 수 있습니다.

    문제를 해결하기 위해서는 아래와 같이 init_data 변수의 기본값을 제거하면 됩니다.

    binary_tree_node<T>(const T& init_data, binary_tree_node* init_left = NULL, binary_tree_node* init_right = NULL);
    

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

작성한 답변에 다른 개발자들이 댓글을 작성하거나 댓글에 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.