int main() {
A a(A::Key()); // this compiles !!!
A a2(A::Key(), 5); // this doesn't
// somehow defaulting the argument causes the private constructor
// to be OK - no idea why
return 0;
}
내 생성자 int a
에 대한 기본 인수를 사용함으로써, 컴파일러는 행복하게 개인 있다는 사실에도 불구하고 A::Key()
내 사용을 컴파일합니다. a
에 명시 적으로 값을 지정하면 컴파일러는 개인 생성자와 오류를 사용하려고한다는 것을 올바르게 인식합니다. 왜 이런거야? 거기에 첫 번째 예제뿐만 아니라 오류가 컴파일러 강제로 someway 있습니까?
라이브 예제는 here을 참조하십시오.
의 원인이됩니다 나는 오랫동안 그것을 보지 못했습니다 ... 도움을 주셔서 감사합니다. –
@R_Kapp 문제 없습니다. 기꺼이 도와주세요. – NathanOliver