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>() 이렇게 해도 모호하다하는데 어떻게 해결해야될까요?

  • 2017년 11월 10일에 작성됨

조회수 56


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);
  • 2017년 11월 10일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close