Межпроцессное взаимодействие (Shared Memory)

206
13 января 2018, 01:55

Kак я могу создать общий class для двух процессов в Shared Memory? Например я хочу чтобы этот class был обшим для двух процессов. Спасибо.

#include <iostream>
#include <string>
class HashTable
{
    struct Node
    {
        std::string login_;
        std::string password_;
        size_t  pos_file_;
        Node*   next_;
        Node(std::string login, std::string password, size_t pos_file = 0, Node* next = 0): 
                login_(login),
                password_(password),
                pos_file_(pos_file), 
                next_(next)
        {}
    };
    size_t hashCode(std::string login, std::string password) const;
public:
    HashTable(size_t size);
    ~HashTable(void);
    bool  search(std::string login, std::string password)const;
    void  insert(std::string login, std::string password);
    void  print()const;
private:
    Node** table_;
    size_t  size_; 
};
HashTable::HashTable(size_t size)
{
    size_ = size;
    table_ = new Node*[size];
    for(size_t i=0; i<size; i++)
        table_[i]=0;
}
HashTable::~HashTable(void)
{
    Node* temp;
    for(size_t i=0; i<size_; i++)
        while(table_[i]!=0)
        {
            temp=table_[i]; 
            table_[i]=temp->next_;
            delete temp;
        }
    delete []table_;
}
size_t HashTable::hashCode(std::string login, std::string password) const
{
    size_t sum = 5381;
    for(size_t i = 0; i < login.size(); ++i)
    {
        sum = sum * 33 + (size_t)login[i];
    }
    for(size_t i = 0; i < password.size(); ++i)
    {
        sum = sum * 33 + (size_t)password[i];
    }
    return sum % size_;
}
bool HashTable::search(std::string login, std::string password) const
{
    Node* vertex = table_[hashCode(login, password)];
    while (vertex)
    {
        if (vertex->login_ == login && vertex->password_ == password)
        {
            return true;
        }
        vertex = vertex->next_;
    }
    return false;
}
void HashTable::insert(std::string login, std::string password)
{
    Node* vertex = table_[hashCode(login, password)];
    Node* current = new Node(login, password, 0, vertex);
    table_[hashCode(login, password)] = current;
}
void  HashTable::print()const
{
    Node* current;
    for(size_t i=0; i<size_; i++)
    {
        std::cout<<i<<"::: ";
        for(current=table_[i]; current!=0; current=current->next_)
            std::cout<<current->login_<<" " << current->password_ << " " << current->pos_file_  << " ::: ";
        std::cout<<std::endl;
    }
    std::cout<<std::endl;
}
READ ALSO
Работа с файлами.Создание новых файлов.Иерархия классов

Работа с файлами.Создание новых файлов.Иерархия классов

Был класс Student и Класс Group который содержал вектор обьектов Student

234
Нажатие мыши WinAPI, во время перемещение курсора

Нажатие мыши WinAPI, во время перемещение курсора

Каким образом определить какая из переданных клавиш была нажата используя WPARAM

211
Обратиться к макроопределениям GET_X_LPARAM и GET_Y_LPARAM

Обратиться к макроопределениям GET_X_LPARAM и GET_Y_LPARAM

В виду необходимости, нет смысла передавать в метод оба параметра, а так же выделять динамическую память под POINTS во время обработки сообщения...

214
Отображение текста в sfml

Отображение текста в sfml

Пытаюсь отобразить текст в sfml:

278