C++ 如何保证当您的代码在其他地方使用时,函数将被一个接一个地调用?

C++ 如何保证当您的代码在其他地方使用时,函数将被一个接一个地调用?,c++,function,C++,Function,我有一组必须一个接一个地运行的函数调用 这是我的代码,所以我没有提前计划太多,无论如何,我有几个函数必须一个接一个地运行,否则代码将被破坏。 另外,我不想在函数内部设置函数,以便在第一个函数结束时调用第二个函数。 还有更好的办法吗? 顺便说一下,我使用C++。p> void ButtomPanelObj::onEnter() { Sprite::onEnter(); // func 1 must be first createSpinButton(); // func 2

我有一组必须一个接一个地运行的函数调用 这是我的代码,所以我没有提前计划太多,无论如何,我有几个函数必须一个接一个地运行,否则代码将被破坏。 另外,我不想在函数内部设置函数,以便在第一个函数结束时调用第二个函数。 还有更好的办法吗? 顺便说一下,我使用C++。p>
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如果开发人员拥有源代码,他们可以做任何事情。你无法阻止他们变得愚蠢。