C ++使另一个类函数的类函数成员

时间:2012-09-29 11:05:24

标签: c++ class function member

我真诚地希望这里的人们不介意这些问题。 在搜索了很多次之后,也许是用错误的搜索术语 - 然而 - 我似乎无法在此找到任何东西。 是的,我查看了cplusplus的文档,但我仍然无法找到答案。

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

这是一个例子

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

当我调用函数setsomevariable()时,它应该只能在调用屏幕函数后使用。就这样:

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

同样,如何将此功能单独作为screen()的成员?

2 个答案:

答案 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;