c++ new 연산자 오류
조회수 1803회
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);
댓글 입력