Я новичок в C ++ и пытаюсь передать коллекцию строк с неизменяемой суммой в функцию, которая существует в отдельном файле класса, в удобном для чтения виде:
//main in Caller.cpp
int main()
{
string details[] = {"Name","Height","Weight"};
/* vector<string> detailsV = {"Name","Height","Weight"};
* Would like to use a vector but can't do this because vector cannot be
* initialized to = {...} in C++
*/
Person p = Person();
p.inspectDetails(details);
}
//Person class in Person.cpp
void inspectDetails(string details [])
{
int sz = sizeof(details); // this will result in details = "Name" only
}
Я пробовал:
//Person class in Person.cpp
<template size_t N>
void inspectDetails(string (&details)[N])
{
int sz = sizeof(details);
}
Однако я сейчас не знаю, как сообщить main в классе Caller о <template size_t N>
, который может позволить мне использовать массив неявного количества,Кажется, я получаю сообщение об ошибке «нет подходящего преобразования std: string [3] в std: string» при попытке вызвать inpectDetails
таким образом.
Каков наилучший способ передать коллекцию строк неявного количества в функцию вне класса Caller, при этом сохраняя возможность жестко кодировать содержимое коллекции, как, например, Collection c = {"...", "...", "..."}
в C ++?Есть ли более простой способ передать полную коллекцию строк в функцию с указателем на вектор или что-то в этом роде?