我真诚地希望这里的人们不介意这些问题。 在搜索了很多次之后,也许是用错误的搜索术语 - 然而 - 我似乎无法在此找到任何东西。 是的,我查看了cplusplus的文档,但我仍然无法找到答案。
我的问题很简单,我如何才能使一个函数只能通过另一个函数调用?
这是一个例子
class someclas{
public:
void screen():
void setsomevariable (int somevariable){}
}clas;
当我调用函数setsomevariable()时,它应该只能在调用屏幕函数后使用。就这样:
clas.screen().setsomevariable(..);
同样,如何将此功能单独作为screen()的成员?
答案 0 :(得分:1)
这符合您的要求,但不一定能满足您的需求。想帮助更多,但你却顽固地拒绝提供细节......
class Screen {
public:
void setsomevariable (int somevariable) {}
};
class someclas {
Screen s;
public:
Screen& screen() { return s; }
} clas;
答案 1 :(得分:0)
成员函数属于一个类。你不能让一个函数成为另一个函数的成员。
你可以在你的类中保留一个布尔值,如果之前没有调用过屏幕则抛出异常。但这是一个丑陋的解决方案..
class someclas{
public:
someclas & screen() { // returns a reference to your class to enable the clas.screen().setsomevariable() syntax
screenCalled = true;
return *this;
}
void setsomevariable (int somevariable){
if (!screenCalled) {
throw std::exception();
}
// some code
screenCalled = false;
}
bool screenCalled;
}clas;