c++ new 연산자 오류

조회수 1802회

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);
    

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)