Вам необходимо добавить прослушиватель событий в конструктор и самостоятельно обработать состояние видимости раскрывающегося списка. Попробуйте что-то вроде этого:
class Example extends React.Component {
constructor(props) {
super(props);
this.state = {
visible: false
};
window.addEventListener("scroll", this.closeMenu);
}
toggleMenu = () => {
this.setState({ visible: !this.state.visible });
};
closeMenu = () => {
this.setState({ visible: false });
};
render() {
return (
);
}
}
Рабочий пример: https://codesandbox.io/s/2ovjzwqz9y [ 111]
Нет, но Вы могли добавить метод, который берет ссылку/указатель на класс CFun - у Вас просто не будет доступа к частным данным:
void Hello(CFun &fun)
{
cout << "hello" << endl;
}
Это является, вероятно, лучшим, Вы сможете сделать. Как указано litb - эта функция должна быть в том же пространстве имен как CFun. К счастью, пространства имен, в отличие от классов, могут быть добавлены к в нескольких местах.
Нет, это не возможно. Может только быть одно определение какого-то конкретного класса, и это должно быть полное определение, означая, что у Вас не может быть частичных определений в различных местах, добавляя участников к классу.
Если необходимо добавить функцию членства к классу, то любой, необходимо изменить определение класса (редактируют CFun.hpp), или получает новый класс из CFun
и помещенный hello()
там.
Самым близким аналогом к такой конструкции (добавляющий функциональность к предопределенным классам) в C++ является Шаблон "декоратор". Это не точно, что Вы после, но это может позволить Вам делать то, в чем Вы нуждаетесь.
Не к моему знанию. Хотя, Вы могли сделать некоторое временное парусное вооружение и сделать решение пространства-имен-y.
После размышления об этом Вы могли сделать что-то ужасное: Найдите некоторую функцию в CFun, который имеет тип возврата, который Вы хотите, и только упоминание однажды во всем заголовке. Скажем, void GoodBye()
.
Теперь создайте файл CFunWrapper.hpp с этим содержанием:
#define GoodBye() Hello() { cout << "hello" << endl; } void GoodBye()
#include "CFun.hpp"
#undef GoodBye
Затем только когда-либо включайте CFunWrapper.hpp вместо CFun.hpp.
Но не делайте этого, если нет некоторое действительно серьезное основание сделать так. Это чрезвычайно подвержено повреждению и даже не может быть возможно, в зависимости от содержания CFun.hpp.
class Party : class CFun
(Ваш party.cpp)
наследовал материал CFun, включая привет () функция.
Так...
Party p;
p.hello();
Нет?