class A
{
public:
A(){}
};
class B
{
public:
B(A param){}
};
void Func(A param){}
void main()
{
A a;
B b(a);
Func(A());
// B b2(A());
// b2.~B();
}
주석으로 처리한 부분을 주석을 풀고 컴파일하면
B b2(A()); 라인에서
main.cpp : warning C4930: 'B bb(A (__cdecl *)(void))': 프로토타입 함수가 호출되지 않았습니다. 변수 정의로 사용하려고 한 것은 아닌지 확인하십시오.
라는 경고가 뜨고
b2.~B();
이 라인에서
main.cpp : error C2325: 'B' : '.~' 오른쪽에 올 수 있는 형식이 아닙니다. 'overloaded-function'이(가) 필요합니다.
에러가 발생하는데 b2를 클래스로 보지 않는거 같아요.
경고 메세지를 보면 B b2(A()); 이걸 함수 프로토타입으로 봐버리는 거 같은데 도대체 왜 어떻게 그럴 수 있죠? 컴파일러 바보 ㅠㅠ
해결 방법은 없나요?
꼭 이런식으로 해야하나요?
A a;
B b(a);
좀 알려주세용ㅠㅠ
이런 함수의 선언으로도 볼수 있다는 겁니다.
B b2(A param)
{
B xxx;
......
return xxx;
}
해결은 아시는대로...