我们说我有以下代码:
// 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()
的最好方法在处理之前。
答案 0 :(得分:1)
可能你正在寻找封装。只需编写一个类,使用户无法忘记调用setA()
:
class Foo {
public:
Foo() { setA(); }
process() { /*...*/ }
private:
void setA() { /*...*/ }
int a;
};