[c++] 구조체와 클래스의 멤버 함수의 가변 인자
C++에서 사용자 정의 데이터 타입을 정의할 때 구조체와 클래스를 사용할 수 있습니다. 이러한 구조체와 클래스에 멤버 함수를 추가하여 더 많은 기능을 구현할 수 있습니다. 가끔 가변 개수의 인자를 전달해야 하는 상황이 발생할 수 있는데, 이때 멤버 함수에 가변 인자를 사용할 수 있습니다.
구조체의 멤버 함수와 가변 인자
구조체의 멤버 함수에 가변 인자를 사용하고 싶을 때, C++11부터 정의된 가변 템플릿 매개변수를 사용할 수 있습니다.
struct MyStruct {
void myFunction(std::initializer_list<int> args) {
for (auto arg : args) {
std::cout << arg << std::endl;
}
}
};
위의 코드에서 std::initializer_list
를 사용하여 가변 개수의 int
인자를 받을 수 있는 myFunction
을 정의하였습니다.
클래스의 멤버 함수와 가변 인자
클래스의 멤버 함수에 가변 인자를 사용할 때는 std::initializer_list
또는 가변 템플릿 매개변수를 사용할 수 있습니다.
class MyClass {
public:
void myFunction(std::initializer_list<int> args) {
for (auto arg : args) {
std::cout << arg << std::endl;
}
}
};
또 다른 방법으로 가변 템플릿 매개변수를 사용하여 가변 인자를 처리할 수 있습니다.
class MyClass {
public:
template <typename... Args>
void myFunction(Args... args) {
(std::cout << ... << args) << std::endl;
}
};
위의 코드에서 ...
문법을 사용하여 여러 인자를 한 번에 처리할 수 있습니다.
이와 같이 클래스 또는 구조체의 멤버 함수에 가변 인자를 사용하여 유연한 인자 처리를 구현할 수 있습니다.
결론
구조체와 클래스는 멤버 함수 내에서 가변 인자를 처리할 수 있습니다. std::initializer_list
와 가변 템플릿 매개변수를 활용하여 다양한 유형의 인자를 처리할 수 있습니다.
참고 자료
- C++ Reference: std::initializer_list
- C++ Reference: Variadic templates
위의 링크를 통해 더 많은 정보를 확인할 수 있습니다.