копировать char * в общий доступ к памяти - PullRequest
0 голосов
/ 01 февраля 2011

Я хочу знать, могу ли я записать в файл (совместно используемую память с boost) символ *. Я создал шаблон и прекрасно работает с «int» и «string», но с char * я могу получить к ним доступ в памяти при выполнении программы, но впоследствии данные не сохраняются в файле, как это происходит со вставками и строками.

Типичным фрагментом кода будет: (T будет char *)

//DECLARATIONS
MyMap *mymap;
managed_mapped_file seg = managed_mapped_file(open_or_create, tableName, tablesize);
mymap = seg->find_or_construct<MyMap>("MyMap")      //object name
            (std::less<T>() //first  constructor parameter
            ,*alloc_inst);    //second constructor parameter

//THE METHOD TO ADD THE ENTRIES
template<class T>
void ShareDB<T>::add_ref_info_to_db (const T &Symbol_Index , const std::string &a_info){

MyMap::iterator res =  mymap->find(Symbol_Index);

mymap->insert(std::pair<const T, shared_string>(Symbol_Index, localSymbol));

поэтому я вызываю шаблон так:

ShareDB <char *> ex;
ex.openDB(dataBaseName,"TestMutex", 196608, true);
ex.add_ref_info_to_db (a,ex.RefInfoRecord);

Может быть, просто я не могу писать указатели ... Я не уверен ...

Заранее спасибо

1 Ответ

1 голос
/ 01 февраля 2011

Вместо template<class T> рассмотрим template<typename T> ... однако я бы просто использовал std::string, если вы не хотите специально поддерживать char *.

...