필자는 함수가 모두 단순한 매개 변수 (예 : std :: string)를 전달하지만 변환 할 수 없음을 확인하려고합니다. 나는 방지하기 위해 무엇을하려고 - 당신은 하나의 함수 매개 변수의 순서를 섞을 수 있습니다 볼 수 있듯이 C++에서 함수 인수 유형 적용
는void showFullName(std::string firstname, std::string lastname) {
cout << "Hello " << firstname << " " << lastname << endl;
}
void someOtherFunction() {
std::string a("John");
std::string b("Doe");
showFullName(a, b); // (1) OK
showFullName(b, a); // (2) I am trying to prevent this
}
같은 두 가지 기능을 상상해보십시오.
내 생각은 일종의 typedef입니다.
typedef std::string Firstname;
typedef std::string Lastname;
void showFullName(Firstname firstname, Lastname lastname)
//...
하지만
(최대 GNU의) C++ 내가 원하는대로 컴파일러가 작동하지 않습니다)누군가가 이것에 대한 좋은 해결책이 있습니까?
당신은 단지'클래스 FIRSTNAME을 의미 : 공공 표준 : : 문자열을 {};'? –
@AbhishekBansal NO! ** 표준 라이브러리는 상속 받도록 설계되어 있지 않습니다. 절대로 그렇게하지 마십시오. ** – Manu343726
과용입니다. 다른 방법은 firstname과 lastname을 가진 Person 클래스를 필드로 만드는 것입니다. –