Upload
giyeon-bang
View
95
Download
1
Embed Size (px)
Citation preview
Effective Modern C++ StudyC++ Korea
Effective Modern C++ StudyC++ Korea3
Effective Modern C++ StudyC++ Korea4
Effective Modern C++ StudyC++ Korea5
Effective Modern C++ StudyC++ Korea6
Effective Modern C++ StudyC++ Korea7
Effective Modern C++ StudyC++ Korea8
Effective Modern C++ StudyC++ Korea9
Effective Modern C++ StudyC++ Korea10
#include <vector>
#include <functional>
class DataObject {
public:
typedef std::function<int (const DataObject&)> FuncType;
explicit DataObject(int data, FuncType ft) : m_data(data), m_funcType(ft) {}
int getHealth() const { return m_funcType(*this); }
int m_data;
private:
FuncType m_funcType;
};
int SimpleIntCalc(const DataObject& d) { return d.m_data*1; }
struct FunctorCalc {
public:
int operator () (const DataObject& d) const {
return d.m_data*3;
}
};
int main() {
DataObject o1(10, SimpleIntCalc);
FunctorCalc h;
DataObject o2(20, h);
DataObject o3(30, [] (const DataObject&) { return 30; });std::vector<DataObject> l = {o1, o2, o3};
for (DataObject& i : l)
std::cout << i.getHealth() << std::endl;
return 0;
}
Effective Modern C++ StudyC++ Korea11
Effective Modern C++ StudyC++ Korea12
Effective Modern C++ StudyC++ Korea13
Effective Modern C++ StudyC++ Korea14
Effective Modern C++ StudyC++ Korea15
Effective Modern C++ StudyC++ Korea16
Effective Modern C++ StudyC++ Korea17
Effective Modern C++ StudyC++ Korea18
Effective Modern C++ StudyC++ Korea19