반응형
E0266/ '~'가 모호합니다.
reference to ‘~’ is ambiguous.
ⅰ. 상황
■ 식별자를 지정하고 사용하려 할 때 발생했다
ⅱ. 원인
■ 겹치는 범위 안에 같은 이름의 식별자가 이미 존재할 때 발생한다.
■ namespace를 전역으로 사용하려 할 때 발생하는 경우가 있다.
ⅲ. 해결책
■ "std" namespace 안에는 생각보다 많은 식별자가 정의되어 있으니 std를 전역으로 선언하지 않는다.
■ 또는 애매한 기호의 이름을 변경한다.
ⅳ. 오류가 발생한 코드
■ "std" namespace 안에 data라는 식별자가 사용되고 있어서 발생했다.
#include <iostream>
using namespace std;
struct data{
char origin;
};
int main(void){
data t;
cin >> t.origin;
cout << t.origin;
return 0;
}
ⅴ. 오류를 해결한 코드
■ "std" namespace에 대한 전역선언을 해제했다.
#include <iostream>
struct data{
char origin;
};
int main(void){
data t;
std::cin >> t.origin;
std::cout << t.origin;
return 0;
}
■ 구조체의 이름을 다른 것으로 변경했다.
#include <iostream>
using namespace std;
struct d{
char origin;
};
int main(void){
d t;
cin >> t.origin;
cout << t.origin;
return 0;
}
반응형