是否调用了函数

时间:2016-02-24 09:09:56

标签: c++ function c++11

我们说我有以下代码:

// I'll be providing these 3
int a = 0;
void setA(){ a = 1000;}
void processA() { std::cout << a; }

// User will call them
int main(){
    // setA();    // <-- Notify about this
    processA();
    return 0;
}

在此,我必须确保有人在致电setA()之前致电processA()。我已经考虑过两种方法:

  • setA()函数内调用processA()或仅将setA()内容转储到processA()
  • 维护一个布尔标志并在稍后检查状态以确保已调用setA()

现在第一种方法有意义,但问题是setA()函数会比processA()更早地被调用,我不能这样做。第二种方式很好但是依赖于运行时。

有没有办法在编译时使这项工作,所以有一条消息/警告或编译器警告是提醒用户他/她没有调用setA()的最好方法在处理之前。

1 个答案:

答案 0 :(得分:1)

可能你正在寻找封装。只需编写一个类,使用户无法忘记调用setA()

class Foo {
    public:
        Foo() { setA(); }
        process() { /*...*/ }
    private:
        void setA() { /*...*/ }
        int a;
};