C++/Library
2021. 3. 21. 23:53
reference_wrapper
<functional>
라이브러리템플릿 등에 레퍼런스로 전달할 수 있게 해주는 클래스이다.
예제
#include <iostream>
#include <vector>
#include <functional>
class Base
{
public:
int i_ = 0;
virtual void print()
{
std::cout << "I'm Base\n";
}
};
class Derived : public Base
{
public:
int j_ = 1;
virtual void print() override
{
std::cout << "I'm Derived\n";
}
};
void doSomething(Base& b)
{
b.print();
}
int main()
{
using namespace std;
Base b;
Derived d;
vector<std::reference_wrapper<Base>> my_vec;
my_vec.push_back(b);
my_vec.push_back(d);
for (auto& e : my_vec)
e.get().print();
}
/* stdout
I'm Base
I'm Derived
*/
'C++ > Library' 카테고리의 다른 글
C++ 출력 스트림 끊기 (0) | 2021.03.24 |
---|---|
C++ std::exception (0) | 2021.03.22 |
C++ IntArray (0) | 2021.03.19 |
C++ initializer_list (0) | 2021.03.19 |
C++ chrono (0) | 2021.03.16 |