精简版:
要点是实例的(复杂)状态可以被类定义之外的函数改变,因此类可以扩展为具有各种内部状态,而不会用许多状态污染类定义 -二传手。
假设以下代码:
class bar
{
virtual void ChangeState()=0;
}
class foo:bar
{
private:
int b;
public:
void ChangeState() {b=3;}
}
Run Code Online (Sandbox Code Playgroud)
我想做的是创建不同的函数,然后在运行时将它们传递给函数,例如
foo.ChangeState(); //b is 3 now
void foo::(?)ChangeState2(){ b=2; };
foo.ChangeState=ChangeState2;
foo.ChangeState(); //b is 2 now
Run Code Online (Sandbox Code Playgroud)
可以在 C++ 中实现这样的构造,而不使用 hacks 吗?
我目前正在制作一个可重用代码的小型库,这个代码已经被证明是有用的,并且我想知道库通常是如何部署的?我的印象是.dll和.lib就足够了,但是,我如何引用类和函数?图书馆是否也常常附带大量的.h文件或者有更优雅的解决方案?
如何部署使用该库的实际应用程序?一旦静态链接,我还需要发送.dll文件或库中的内容是否被复制到程序中?