C ++ делает функцию класса членом другой функции класса

Я искренне надеюсь, что люди здесь не возражают против такого рода вопросов.
После поисков много раз, возможно, с неправильными поисковыми терминами — тем не менее — я, похоже, не смог найти НИЧЕГО по этому вопросу.
Да, я просмотрел документацию по cplusplus, но так и не смог найти ответ.

Мой вопрос прост, как мне сделать так, чтобы функция могла быть вызвана только через другую функцию?

Вот пример

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

И когда я вызываю функцию setsomevariable (), ее можно использовать только после вызова экранной функции. В качестве таких:

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

Опять же, как мне сделать эту функцию членом только screen ()?

1

Решение

Это соответствует вашим требованиям, но не обязательно соответствует вашим потребностям. Хотелось бы, чтобы помочь больше, но вы упорно отказываются сообщить подробности …

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

class someclas {
Screen s;
public:
Screen& screen() { return s; }
} clas;
1

Другие решения

Функция-член принадлежит классу. Вы не можете сделать функцию членом другой.

Вы можете оставить логическое значение в своем классе и вызвать исключение, если экран не вызывался раньше. Но это уродливое решение ..

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;
0

По вопросам рекламы [email protected]