gpt4 book ai didi

c++ - 确保在编译时调用方法

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:05:15 24 4
gpt4 key购买 nike

如何确保在编译时调用特定方法?

例如,假设我有一个包含 2 个方法的对象:

struct Foo
{
... func1(...);
... func2(...);
};

我想确保在调用 func2 之前调用 func1,即:

int main()
{
Foo f;
...
f.func1(...);
f.func2(...);
f.func2(...); // and so on
}

但如果我这样做的话,我想生成一个编译错误:

int main()
{
Foo f;
...
f.func2(...); // generate a compile error due the fact that func1 must be called first
f.func1(...);
f.func2(...); // and so on
}

最佳答案

虽然很好奇为什么要这样做,但一般要注意的是,您必须向用户公开一个不会被错误使用的界面。胆量私有(private)化:

struct Foo
{
public:
void callme()
{
func1();
func2();
}

private:
... func1(...);
... func2(...);


};

int main()
{
Foo f;
f.callme();
}

如果你需要强制一次性初始化对象,在构造函数中进行:

struct Foo
{
public:
Foo()
{
func1();
}

func2(...);
private:
... func1(...);
};

int main()
{
Foo f; // func1() called automagically
f.func2();
}

设计类接口(interface),你必须时刻考虑最糟糕的事情:用户从不阅读文档,用户总是忘记调用foo.initialize(),用户总是忘记释放内存而导致内存泄漏,等等。

关于c++ - 确保在编译时调用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21835583/

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