Обновить
104
0.2

Пользователь

Отправить сообщение
угловые скобки пропали в строке
KnownVectorWrapper < T, QList < T > > qv;
* не указал, что теперь нужен конструктор без параметров
template <typename T, typename C>
class KnownVectorWrapper : public IVectorWrapper<T>
{
public:
    KnownVectorWrapper() : container(*(C*)NULL) { }
    KnownVectorWrapper(C& _container) : container(_container) { }
    // ...
Можно избавиться от new/delete, явно перечислив все возможные контейнеры (их не должно быть много, поэтому не сложно в одном классе это сделать. Также добавляется небольшой оверхед по памяти: sizeof(size_t) на каждый контейнер).

template <typename T>
class VectorWrapper
{
public:
    VectorWrapper(vector<T>& _container) : sv(_container), container(&sv) { }
    VectorWrapper(QList<T>& _container) : qv(_container), container(&qv) { }

    T& operator[](size_t i) { return (*container)[i]; }
    size_t size() { return container->size(); }

private:
    KnownVectorWrapper<T,vector<T>> sv;
    KnownVectorWrapper<T,QList<T>> qv;
    IVectorWrapper<T>* container;
};
true-cpp way это сделать функцию fn() шаблонной.
Но поскольку не хочется, не обойтись без вызова функции по указателю (будь это virtual или lambda).
Вот, собственно получилось полностью сохранить семантику VectorWrapper:

Скрытый текст
#include <vector>
using namespace std;

template <typename T>
class IVectorWrapper
{
public:
    virtual T& operator[](size_t i) = 0;
    virtual size_t size() = 0;
    virtual ~IVectorWrapper() { }
};

template <typename T, typename C>
class KnownVectorWrapper : public IVectorWrapper<T>
{
public:
    KnownVectorWrapper(C& _container) : container(_container) { }

    T& operator[](size_t i)
    {
        return container[i];
    }

    size_t size()
    {
        return container.size();
    }

private:
    C& container;
};

template <typename T>
class VectorWrapper : IVectorWrapper<T>
{
public:
    template <typename C>
    VectorWrapper(C& _container) : container(new KnownVectorWrapper<T,C>(_container)) { }
    ~VectorWrapper() { delete container; }

    T& operator[](size_t i)
    {
        return (*container)[i];
    }

    size_t size()
    {
        return container->size();
    }

private:
    IVectorWrapper<T>* container;
};


void fn(VectorWrapper<int> x)
{
    int a = 0;
    for (size_t i = 0; i < x.size(); ++i)
    {
        printf("%d ", x[i]);
    }
}

void main()
{
        vector<int> a;
        a.push_back(7);
        a.push_back(15);
        fn(a);
}
Приведённый класс VectorWrapper каким-нибудь существующим cpp-компилером компилируется?
Везунчик. Я проходил на 133 MHz, 16 Mb. Эх, как она свопилась посреди уровней…
Поисковые боты, зайдя на страницу поиска, получат её.
Блокируется (а можно и заменять заглушкой с пустым списком результатов) дальнейший переход — дорогостоящая операция поиска, если со страницы с формой поискового запроса не подгружен файл.

Маловероятно, что поисковик будет пользоваться формой поиска на сайте
Реклама по телевизору (в том числе и перед Дом-2)
В принципе, можно и обычный триггер объявить квантовым устройством. Ведь процессы в полупроводниках без квантовой механики не описываются.
Табу на уничтожение оригинала тормозит прогресс.
Ведь люди с таким моральным ограничением смертны: смерть носителя (единственного экземпляра) = смерть разума.

Обязательно появятся люди, психологически преодолевшее это ограничение и у них будут развязаны руки, поэтому носители позиции автора вымрут, не выдержав эволюционной конкуренции.

Новые, свободные от предрассудков, люди
— будут делать бэкапы себя;
— будут масштабировать себя под имеющиеся ресурсы (больше ресурсов — больше копий);
— найдут способ проводить синхронизацию копий. представьте, копия высылается на марс, делает необходимые исследования, а дорогостоящая доставка обратно не потребуется. достаточно снять «дельту» разности личностей и влить её в другую личность (с раздвоением памяти).
два последних макроса чище реализовать через typedef
Осталось это обернуть в интерфейс, понятный каждому бухгалтеру
А если человек, у которого нет аттестации программиста, написал программу (или скрипт), то его в тюрьму?
«Нагрузку» легко можно встретить на официальном сайте без посредников.
Последнее что помню:
Adobe flash -> Chrome
Flylink dc++ -> Yandex Bar

Девелоперы хотят чуть денег на своей разработке срубить.
Хочешь — собирай сам из исходников. Или убирай галочку в инсталлере.

Для этого есть DroidWall и LBE Privacy Guard.
Интернет будильнику закрыть или настроить только ntp.
При попытке будильника отправить СМС или позвонить появится подтверждение.
По поводу хуков. Если уж дело дошло до внедрения в конкретный известный процесс и требуется перехватить определённые данные, а не лишь бы что, значит у хакера есть как минимум бинарники этой программы. Дизассемблированием определить, где что шифруется — дело техники.
А что если вскоре ведущий синхронизатор откажет, а сервис только разведёт руками: ну, мы же предупреждали…
Можно подумать, дельфи/студию/етц покупают не для программирования, а чтобы саппорт лизал яйца.
1) Слишком далеко от темы. Всё проще. Обычно надо украсть пару doc-файлов из папки «Мои документы». Вот Microsoft Word предназначен для секретной информации? Вроде нет, но вся инфа обычно в нём.

3) Абсолютно пофиг, куда вешать хук, если процесс того же уровня привилегий. UAC разграничивает процессы на админские и обычные. Разве что «секретные» процессы (Outlook, Word) пускать с повышением полномочий, тогда да, будет от него польза, что неповышенные процессы не смогут в них влезть. Но опять же, файлы в «Моих документах» никак не защищены

Информация

В рейтинге
2 749-й
Откуда
Россия
Зарегистрирован
Активность