1

我真诚地希望在座的人不要介意这些问题。在搜索了很多次之后,也许使用了错误的搜索词 - 然而 - 我似乎无法在这方面找到任何东西。是的,我浏览了 cplusplus 的文档,但仍然找不到答案。

我的问题很简单,如何才能使一个函数只能通过另一个函数调用?

这是一个例子

class someclas{
public:
void screen():
void setsomevariable (int somevariable){}
}clas;

而当我调用函数 setsomevariable() 时,它应该只有在调用 screen 函数后才能使用。像这样:

clas.screen().setsomevariable(..);

同样,我如何使这个函数成为 screen() 的成员?

4

2 回答 2

1

这确实符合您的要求,但不一定满足您的需求。想提供更多帮助,但您顽固地拒绝提供详细信息...

class Screen {
    public:
    void setsomevariable (int somevariable) {}
};

class someclas {
    Screen s;
    public:
    Screen& screen() { return s; }
} clas;
于 2012-09-29T11:20:57.887 回答
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;
于 2012-09-29T11:14:02.010 回答