Задать вопрос
  • Как в С++ использовать несколько методов к объекту как в JavaScript?

    gbg
    @gbg Куратор тега C++
    Любые ответы на любые вопросы
    В C++ это будет вызов метода method2() у того, что вернул method1().

    А вы что хотите? Чтобы method2() вызывался у object? тогда метод1 должен возвращать ссылку на *this.

    #include <iostream>
    #include <stdexcept>
    #include <iomanip>
    using namespace std;
    
    
    struct vantuz
    {
       vantuz& push();
       vantuz& pull();
       vantuz();
    private:
       bool pushed;
    };
    
    vantuz::vantuz():pushed(false)
    {
    }
    
    vantuz& vantuz::push()
    {
            if(pushed)
            {
                  throw logic_error("already pushed!");
            }
            pushed=!pushed;
            cout<<"push! ";
            return *this;
    }
    
    vantuz& vantuz::pull()
    {
        pushed=!pushed;
        if(pushed)
        {
              throw logic_error("already pulled!");
        }
       cout<<"pull! ";
       return *this;
    }
    
    int main()
    {
       try
       {
          vantuz v;
          v.push().pull().push().pull().push().pull().push().push();
       }
       catch(logic_error& ex)
       {
       	  cout<<endl<<setw(20)<<setfill('@')<<' '<<"Runtime error!"<<setw(20)<<setfill('@')<<' '<<endl<<ex.what()<<endl;
       	  throw;
       }
       return 0;
    }

    Потыкать на ideone
    Ответ написан
    3 комментария
  • Каким алгоритмом можно проверить Большое число на простоту?

    @SeptiM
    Расклад примерно такой. Пусть n -- длина числа, т.е. обычный перебор работает за 2^{c * n}.

    1) Вероятностный тест Рабина-Миллера можно реализовать за O(k n^2 log n), где k -- число попыток. Вероятность ложноположительной ошибки 4^-k. При k=100 это значение настолько безумно мало, что скорее в вашей программе найдется критический баг, процессор сделает ошибку в вычислениях и взломщик выиграет в лотерею и все это одновременно, чем число окажется составным.

    2) Детерминированный AKS (en.wikipedia.org/wiki/AKS_primality_test). Работает за O(n^{6 + eps}). Интересен скорее теоретически.

    3) Эллиптический тест на простоту (en.wikipedia.org/wiki/Elliptic_curve_primality). Эмпирически работает за O(n^5). Интересен тем, что в случае успеха возвращает сертификат простоты.
    Ответ написан
    2 комментария
  • Почему не работает событие (C#)?

    AxisPod
    @AxisPod
    C# это не PHP, тупо начать писать не прочитав ни одной книги не получится.
    Ответ написан
    6 комментариев
  • Какую C++ библиотеку для работы с сокетами посоветуете?

    AxisPod
    @AxisPod
    libev, libevent, libuv, boost::asio
    Ответ написан
    Комментировать
  • Как сделать программу генерация предложений?

    @vilgeforce
    Раздолбай и программист
    как сделать будет лучше написать как не работает.
    Ответ написан
    Комментировать
  • Вопрос касательно C#?

    using System;
    using System.Collections.Generic;
    
    namespace ListKeyValuePair
    {
    	class Program
    	{
    		public static void Main(string[] args)
    		{
    			List<KeyValuePair<string, string>> lkvp = new List<KeyValuePair<string, string>>();
    			
    			lkvp.Add(new KeyValuePair<string,string>("pdo", "somedata"));
    			lkvp.Add(new KeyValuePair<string,string>("for", "somedata1"));
    			
    			foreach (KeyValuePair<string, string> kvp in lkvp)
    			{
    				
    				Console.WriteLine("Key= {0}, Value= {1}", kvp.Key, kvp.Value);
    			}
    			
    			Console.Write("Press any key to continue . . . ");
    			Console.ReadKey(true);
    		}
    	}
    }

    как можно сделать чтобы можно было вводить
    data["for"]toString() чтобы возвращала somedata1

    если хотите именно так - используйте словарь (класс Dictionary), пример:
    public static void Main(string[] args)
    		{
    			Dictionary<string, string> dictionary = new Dictionary<string, string>();
    		
    			dictionary.Add("cat", "animal");
    			dictionary.Add("shark", "fish");
    			
    			Console.WriteLine(dictionary["cat"]);	
    			Console.ReadKey(true);
    		}
    Ответ написан
    Комментировать
  • С чего начать изучать C#?

    God-emperor
    @God-emperor
    create a golden path
    Мне понравилась книга Эндрю Троелсона. Как мне кажется - подойдёт
    Ответ написан
    1 комментарий
  • Можно ли перегружать базовые типы в С++?

    @MiiNiPaa
    Нет, нельзя. В вашем случае можно написать свой компаратор и передать его шаблонным параметром в ваше дерево.
    Если оно не поддерживает кастомных компараторов, добавьте поддержку, это очень полезно.
    Ответ написан
    3 комментария
  • Как сделать копию структуры?

    Ocelot
    @Ocelot
    Забыли задать размерности для второй матрицы. Элементы копируются, а свойства n и lines - нет.
    Ответ написан
    Комментировать
  • Как работать со статическими ссылками в C++?

    Adamos
    @Adamos
    Лучше переделайте на такой вариант:
    static QSqlDatabase* getPDB()
    {
      static QSqlDatabase *pdb = NULL;
      if(pdb == NULL) {
        pdb = connect();
      }
      return pdb;
    }

    Ну, соответственно, connect должно создавать это самое соединение и возвращать тот самый указатель.
    И никаких глобальных членов класса...
    Ответ написан
    3 комментария
  • Как работать со статическими ссылками в C++?

    maaGames
    @maaGames
    Погроммирую программы
    QSqlDatabase * DB::pdb = NULL;
    Ответ написан
    Комментировать
  • Зачем нужны Dependency containers?

    FirstX
    @FirstX
    .net developer
    Для того, чтобы отделить мух от котлет.

    Представь, что у тебя условно есть 3 отдела. И все они между собой очень тесно связаны. Ну не могут работать друг без друга и все тут. В итоге захотел поменять что-то во втором отделе, будь добр поменяй и в остальных двух, ибо они от него напрямую зависят.

    Первое, что приходит в голову - создание абстрактных интерфейсов, через которые все взаимодействие и происходит. Ок, создали. Но абстрактные интерфейсы делать ничего не могут, на то они абстрактные. Значит где-то нужно явно создавать реализацию для этой абстракции. Становится вопрос где это делать. Создавать внутри одного класса - экземпляры другого, это уже тоже сильная связанность между ними. Для этого и придумали ящик, где будут храниться все соответствия между интерфейсами и реализациями. Захотел получить реализацию такого-то интерфейса, попросил ответственного менеджера, он сам заглянул в свой ящик и вытащил то, что тебе требуется. И назвали это все Контейнер Зависимостей (Dependency Container). То есть это конкретный инструмент для создания слабых связей между модулями.

    Ну а слабая связанность модулей и абстракции между ними дают всякие полезные фишки по типу быстрого переключения между реализациями (например реальное/тестовое окружение), позволяет проще рефакторить отдельные модули и так далее.
    Ответ написан
    Комментировать
  • Почему метод GetEnumerator() интерфейса IEnumerable реализовывается дважды?

    FirstX
    @FirstX
    .net developer
    Для ответа на этот вопрос надо окунуться в историю. А именно был момент, когда не было Generic-типизации и был только нетипизированный интерфейс перечисления IEnumerable. А потом с приходом новой версии .Net появились обобщения (это когда явно указывается тип <T>, в твоем случае тип данных <Product>).

    Сигнатура этого интерфейса выглядит следующим образом:
    public interface IEnumerable<out T> : IEnumerable

    То есть для обратной совместимости, новый интерфейс наследует старый, а значит и метода нужно реализовать два: один, который возвращает старый нетипизированный вариант, и новый, более удобный типизированный вариант.

    Для понимания: в старом варианте, когда ты обходил в цикле каждый элемент через foreach - тип элемента был object (все другие типы от него унаследованы). И на каждой итерации, чтобы получить свой тип Product и работать с ним - приходилось делать приведение типов.
    В новом варианте, благодаря тому, что явно указан тип <Product> при обходе в цикле - ты сразу получаешь объект типа Product.

    Рекомендую по этой теме почитать вообще изменения в .Net при переходах с версии на версию + почитать про Generic в дотнете.
    Ответ написан
    Комментировать
  • Как научиться программировать, если доступен лишь браузер?

    Kublyakov
    @Kublyakov
    https://c9.io/ - мощная онлайн IDE в браузере. Для практики, при изучении веб технологий подойдет отлично.
    Ответ написан
    Комментировать
  • Как научиться программировать, если доступен лишь браузер?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    писать код js/html(5)/css можно в любом текстовом редакторе и проверять локально
    (если только там не ajax, websockets и т.д.).

    рынок ТОЧНО перенасыщен "говнокодерами"
    а вот СПЕЦИАЛИСТАМИ - вряд ли)
    Ответ написан
    Комментировать
  • Дети и интернет: как контролировать?

    gbg
    @gbg Куратор тега Компьютерные сети
    Любые ответы на любые вопросы
    Есть предложение детей натурально воспитывать, а не отдавать этот процесс на аутсорс интернету.

    Из комментария vilgeforce
    Критическое мышление прививайте, тогда вопрос дезинформации и какой либо морали будет волновать вас гораздо меньше.
    Ответ написан
    16 комментариев
  • Как выбрать узкую специализацию?

    @Inav
    Для начала нужно спуститься на землю, умею плохо - это не умею, это знаком, видел, имею представление. У вас по каждой из перечисленных областей есть несколько хороших вакансий куда вас берут работать? - Скорее всего нет. Нужно выбирать работу, а не область. Идите туда, где вас устраивают задачи, деньги и куда вас берут. Дальше растете в той области, которую требует ваша работа. А все остальное "вкусное" уходит в раздел хобби, программирования для себя и участия в опенсорс проектах.
    Ответ написан
    2 комментария
  • Как выбрать узкую специализацию?

    @Shetani
    Напишите на бумажках что нравиться и вытащите одну (когда будете вытаскивать узнаете чего хотите больше).
    Ответ написан
    Комментировать
  • Как открыть исходники проекта в Visual Studio если нет sln файла?

    tsarevfs
    @tsarevfs Куратор тега C++
    C++ developer
    Там есть файлы CmakeList.txt это означает что нужно пользоваться cmake. Он может сгенерировать sln и vsproj файлы с описанием проекта. Причем структура папок это не главная проблема. В CmakeList.txt хранится информация о зависимостях, переменных окружения.
    Ответ написан
    2 комментария