Я искренне надеюсь, что люди здесь не возражают против такого рода вопросов.
После поисков много раз, возможно, с неправильными поисковыми терминами — тем не менее — я, похоже, не смог найти НИЧЕГО по этому вопросу.
Да, я просмотрел документацию по cplusplus, но так и не смог найти ответ.
Мой вопрос прост, как мне сделать так, чтобы функция могла быть вызвана только через другую функцию?
Вот пример
class someclas{
public:
void screen():
void setsomevariable (int somevariable){}
}clas;
И когда я вызываю функцию setsomevariable (), ее можно использовать только после вызова экранной функции. В качестве таких:
clas.screen().setsomevariable(..);
Опять же, как мне сделать эту функцию членом только screen ()?
Это соответствует вашим требованиям, но не обязательно соответствует вашим потребностям. Хотелось бы, чтобы помочь больше, но вы упорно отказываются сообщить подробности …
class Screen {
public:
void setsomevariable (int somevariable) {}
};
class someclas {
Screen s;
public:
Screen& screen() { return s; }
} clas;
Функция-член принадлежит классу. Вы не можете сделать функцию членом другой.
Вы можете оставить логическое значение в своем классе и вызвать исключение, если экран не вызывался раньше. Но это уродливое решение ..
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;