gpt4 book ai didi

c++ - 类松散耦合和数据访问

转载 作者:行者123 更新时间:2023-11-30 05:24:27 24 4
gpt4 key购买 nike

我正在尝试实现一个复杂的类,其构造需要指定一个条件,该条件允许构造函数确定对象何时被构造。考虑一下,例如:

class RigidBody
{
private:
std::vector<double> trajectory_;
// Other stuff...
public:
RigidBody(std::unique_ptr<TerminateCondition>, std::vector<double> const &);
// Other stuff...
};

这是构造函数的样子:

RigidBody::RigidBody(std::unique_ptr<TerminateCondition> condition, std::vector<double> const &p)
{
int n = 0;
while(!condition->Done( /* Signature */))
{ n++;
/* Do other stuff... */
// such as, trajectory_.push_back(sin(n * dt));
}
}

我想TerminateCondition成为一个抽象类。

需求1:访问RigidBody成员

我想要class TerminateConditionAtRest: public TerminateCondition能够使用 trajectory_ ,这样我就可以在 std::abs(trajectory.back() - trajectory_[0]) < epsilon 等条件下终止.我需要强制 Done(...)采取vector const &作为输入参数并传递 trajectory_到吗?

需求2:具有Done(...)签名的灵 active

我可能想要 class TerminateConditionNumSteps: public TerminateCondition标记Done什么时候n > 1000或类似的东西。基本上,我可以对 /* Signature */ 使用一些灵 active 。在那里。

如何实现这样的设置,其中TerminateCondition->Done可以使用 RigidBody 范围内可用的一组变量。构造函数,例如私有(private)成员 trajectory_或本地人喜欢 n

我只是在寻找循环终止条件建模的最大灵 active 。抽象类似乎不允许灵活使用输入参数签名。另一方面,抽象类似乎是唯一允许我在运行时指定条件的东西。

谢谢。

最佳答案

这只是我的想法。也许您想使用类似的东西?:

class TrajectoryCreator
{
public:
virtual vector<float> create(const vector<float>& path) = 0;
}

然后您可以创建您想要的特定轨迹:

RigidBody( TrajectoryCreator& t, const vector<float> &p)
: trajectory_(t.create(p))
{}

这个解决方案的主要思想是在单独的类中创建轨迹的移动逻辑

关于c++ - 类松散耦合和数据访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38672289/

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