• Какая разница между ClassName::m_Field и this->m_Field в нестатическом методе?

    @MarkusD Куратор тега C++
    все время мелю чепуху :)
    Денис , есть такой термин, как Квалификация идентификатора. Соответственно, идентификатор может быть как полностью квалифицированным (fully qualified), так и частично (partially qualified). Обычно большая часть квалификации может быть автоматически подставлена во время трансляции кода. Однако, в целом ряде случаев нужно руками расширять квалификацию.

    Возьмем такой пример:
    spoiler
    class Foo
    {
    public:
    	void baz1( int bar )
    	{
    		this->bar = bar;
    	}
    	
    	void baz2( int bar )
    	{
    		Foo::bar = bar;
    	}
    	
    	void baz3( int bar )
    	{
    		this->Foo::bar = bar;
    	}
    
    public:
    	int bar = 0;
    };


    Имя параметра функций соответствует имени поля класса. Это плохой стиль, но для примера - самое то. Частично квалифицированное имя "bar" в любой из функций будет ссылаться на как можно более локальные данные. В данном случае - именно на параметр, а не на поле класса. Теперь, чтобы сказать "поле класса bar" нам надо сделать квалификацию имени "bar" более полной. Самая полная квалификация используется в функции "baz3".

    Любое имя может быть заменено на его полную квалификацию, включая и операторы. Можно написать "foo.operator->()" вместо "foo->", если класс "foo" имеет перегруженный оператор "->". Я не представляю зачем это нужно, но так тоже можно написать.

    Можно обратиться к перекрытой или виртуальной функции родительского класса.

    К слову, полная квалификация очень редко когда действительно нужна. Например, вот в этом шаблоне без расширения частичной квалификации поля "m_data" использовать его в наследнике не получится. А вот в этом шаблоне без полной квалификации имени не получится взять указатель на статическую функцию шаблонного класса.
    Ответ написан
    Комментировать
  • Есть ли какой нибудь эмулятор роутера чтобы прошивку протестировать можно было?

    15432
    @15432
    Системный программист ^_^
    Обычно прошивка делится на бутлоадер и основную прошивку. Если основная перестала работать, заходите в режим бутлоадера и заливаете новую. Например, на Dlink бутер позволял залить образ по SFTP на фиксированный IP, на ASUS - по HTTP через браузер, опять же, на фиксированном IP.
    Полностью эмулировать роутер вместе с хардварным окружением затруднительно
    Ответ написан
    Комментировать
  • Как работать с enum в Java?

    eugene_leshchinskiy
    @eugene_leshchinskiy
    ошибка версии Java. использйте Java 5 или выше
    Ответ написан
    2 комментария