
DsVector::apply 함수의 첫 번째 인자로 함수를 전달할 때, 함수에 멤버 변수에 접근할 수 있는 방법은 다음과 같습니다.
1. 멤버 변수를 전역 변수로 선언하는 방법: 이 방법은 함수 내에서 멤버 변수에 접근할 수 있지만, 다른 함수에서 멤버 변수에 접근할 수 없게 됩니다.
#hostingforum.kr
cpp
class MyClass {
public:
int x;
};
void myFunction(MyClass obj) {
auto applyFunc = [&](auto&&... args) {
return obj.x + args...;
};
DsVector vec = {1, 2, 3};
DsVector result = DsVector::apply(applyFunc, vec);
}
2. 멤버 변수를 함수의 인자로 전달하는 방법: 이 방법은 함수 내에서 멤버 변수에 접근할 수 있지만, 함수가 많은 인자를 받을 수 있게 됩니다.
#hostingforum.kr
cpp
class MyClass {
public:
int x;
};
void myFunction(MyClass obj, auto&&... args) {
auto applyFunc = [&](auto&&... args) {
return obj.x + args...;
};
DsVector vec = {1, 2, 3};
DsVector result = DsVector::apply(applyFunc, vec);
}
3. 람다 함수 내에서 멤버 변수에 접근하는 방법: 이 방법은 함수 내에서 멤버 변수에 접근할 수 있지만, 람다 함수가 복잡해질 수 있게 됩니다.
#hostingforum.kr
cpp
class MyClass {
public:
int x;
};
void myFunction(auto&&... args) {
auto applyFunc = [&](auto&&... args) {
return (args.x + ...);
};
MyClass obj;
obj.x = 10;
DsVector vec = {obj, obj, obj};
DsVector result = DsVector::apply(applyFunc, vec);
}
4. 멤버 변수를 캡처하는 방법: 이 방법은 함수 내에서 멤버 변수에 접근할 수 있지만, 람다 함수가 복잡해질 수 있게 됩니다.
#hostingforum.kr
cpp
class MyClass {
public:
int x;
};
void myFunction(auto&&... args) {
auto applyFunc = [&](auto&&... args) {
return (args.x + ...);
};
MyClass obj;
obj.x = 10;
DsVector vec = {obj, obj, obj};
DsVector result = DsVector::apply(applyFunc, vec);
}
5. std::bind 함수를 사용하는 방법: 이 방법은 함수 내에서 멤버 변수에 접근할 수 있지만, 함수가 복잡해질 수 있게 됩니다.
#hostingforum.kr
cpp
class MyClass {
public:
int x;
};
void myFunction(auto&&... args) {
auto applyFunc = std::bind(&MyClass::x, &obj);
DsVector vec = {obj, obj, obj};
DsVector result = DsVector::apply(applyFunc, vec);
}
위의 방법 중 하나를 사용하여 멤버 변수에 접근할 수 있습니다.
2025-06-08 05:22