gpt4 book ai didi

c++ - 如何成对存储(伴随)仿函数?

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:44:45 29 4
gpt4 key购买 nike

我有两个伴随的仿函数,即它们成对出现如果一个是 doX() ,另一个将是 undoX()

它们是这样声明的:

    template< typename T >
struct doSomething{
void operator()( T &x ) const {

.....
.....
.....

}
};


template< typename T >
struct undoSomething{
void operator()( T &x ) const {

.....
.....
.....

}
};

这些由类的成员变量使用。

我如何将它们存储在一个 std::pair 中,我可以将其传递给类的构造函数?

附言没有 C++11 或 boost 的解决方案将不胜感激。但我愿意将它们用作最后​​的手段

最佳答案

容器类:

struct Container
{
typedef int DoUndoType; // This is an example, the actual type will
// have to be decided by you.

// The constructor and its argument.
Container(std::pair<doSomething<DoUndoType>,
undoSomething<DoUndoType>> const& doUndoPair) : doUndoPair(doUndoPair) {}

std::pair<doSomething<DoUndoType>,
undoSomething<DoUndoType> doUndoPair;
};

容器类的使用:

// Construct an object.
Container c(std::make_pair(doSomething<Container::DoUndoType>(),
unDoSOmething<Container::DoUndoType>()));

// Use the pair.
int arg = 10;
c.doUndoPair.first(arg);
c.doUndoPair.second(arg);

关于c++ - 如何成对存储(伴随)仿函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23283443/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com