C++ 如何保证当您的代码在其他地方使用时,函数将被一个接一个地调用?
我有一组必须一个接一个地运行的函数调用 这是我的代码,所以我没有提前计划太多,无论如何,我有几个函数必须一个接一个地运行,否则代码将被破坏。 另外,我不想在函数内部设置函数,以便在第一个函数结束时调用第二个函数。 还有更好的办法吗? 顺便说一下,我使用C++。p>C++ 如何保证当您的代码在其他地方使用时,函数将被一个接一个地调用?,c++,function,C++,Function,我有一组必须一个接一个地运行的函数调用 这是我的代码,所以我没有提前计划太多,无论如何,我有几个函数必须一个接一个地运行,否则代码将被破坏。 另外,我不想在函数内部设置函数,以便在第一个函数结束时调用第二个函数。 还有更好的办法吗? 顺便说一下,我使用C++。p> void ButtomPanelObj::onEnter() { Sprite::onEnter(); // func 1 must be first createSpinButton(); // func 2
void ButtomPanelObj::onEnter()
{
Sprite::onEnter(); // func 1 must be first
createSpinButton(); // func 2 must be after 1
createPayLinesLable(); // func 3 must be after 2
createBetLable(); // func 4 must be after 3
createTotalBetLable(); // func 5 must be after 4
setWidgetsPosition(); // must be last func
}
您可以封装这些函数。如果必须按顺序调用它们,并且一直调用它们,则不应单独访问它们。可能是这样的:
class ButtomPanelObj{
private:
void createSpinButton();
void createPayLinesLable();
void createBetLable();
void createTotalBetLable();
void setWidgetsPosition();
public:
void createStuff() {
Sprite::onEnter(); // func 1 must be first
createSpinButton(); // func 2 must be after 1
createPayLinesLable(); // func 3 must be after 2
createBetLable(); // func 4 must be after 3
createTotalBetLable(); // func 5 must be after 4
setWidgetsPosition(); // must be last func
}
}
现在,您只能从外部调用
createStuff()
,这保证了所需的函数顺序。为什么这些函数会被无序调用?为什么您不能创建新函数callIt(),以正确的顺序调用它们?如果您调用一个函数,它将按照编写的顺序执行。只需调用您的onEnter()
函数,它们将按该顺序执行。。。或者我误解了你的问题?如果要在函数之后调用它,为什么要设置函数?如果我正确理解了你的问题,你就不希望任何处理此代码的人能够重新排序函数。简单的答案是你不能。要解决这个问题,您可以将这些方法提取到另一个类中,使其私有,并让另一个类正好有一个公共方法,该方法按要求的顺序调用这些方法。这就是我现在或多或少拥有的,开发者仍然可以移动函数,而所有其他函数都无法工作。您永远无法阻止其他开发者更改函数的私有部分。您唯一能做的就是提供一个防故障的公共接口,并结合私有部分的良好文档,以防止误用。如果从开发人员的角度考虑,如果开发人员愿意,总是可以删除函数中的任何故障预防。因此,如果不限制对源代码的访问,您永远无法完全保护它。@user63898如果开发人员拥有源代码,他们可以做任何事情。你无法阻止他们变得愚蠢。