Я новичок в C ++ и пытаюсь заставить работать следующий код:
struct Keywords
{
const char* const* keys;
int count;
}
Keywords GetKeywords()
{
Keywords keywords;
keywords.count = 10;
string keys = "a b c d e";
keywords.keys = keys???;
return keywords;
}
int main(int argc, char *argv[])
{
Keywords keywords = GetKeywords();
cout<<keywords.count<<endl; //prints 10
cout<<keywords.keys<<endl; //prints a memory address like 0030F838
}
Как я могу заставить keys
указывать на a b c d e
?До сих пор я пробовал это
char * writable = new char[keys.size() + 1];
strcpy(writable, keys.c_str());
writable[keys.size()] = '\0';
const char* a = writable;
const char** ptr = &a;
results.keys = ptr;
Во время отладки я вижу, что results.keys
показывает a b c d e
, но как только возвращается GetKeywords()
, results.keys
указывает на нечитаемую область памяти.
Я не могу вносить изменения в struct Keywords
и GetKeywords()
подпись метода.