我想能夠傳遞一個綁定小於最大大小的數組到一個構造函數並初始化私有數據成員。問題是我要麼error: invalid initializer for array member 'option Program::long_options [10]'
或error: no matching function for call to 'Program::Program(const char [8], option [4], const char [5])'
。唯一的選擇是用無用的條目填充我傳遞給構造函數的數組。如何在構造函數中初始化數組?
class Program
{
public:
Program(const char* pn, const option (&lo)[MAX_OPTS], const char* os);
private:
option long_options[MAX_OPTS];
};
Program::Program(const char* pn, const option (&lo)[MAX_OPTS], const char* os)
: program_name(pn), long_options(lo), opt_string(os)
{
}
option ex_lo[] = {
{ "help", no_argument, nullptr, 'h' },
{ "verbose", no_argument, &helpdata.verbose_flag, 1 },
{ "output", required_argument, nullptr, 'o' },
LONG_OPTION_ZEROS
};
Program example("example", ex_lo, "hvo:");
我也使用矢量嘗試,但遇到了同樣的問題:
std::vector<option> long_options;
};
Program::Program(const char* pn, option (&lo)[MAX_OPTS], const char* os)
: program_name(pn), long_options{std::begin(lo), std::end(lo)}, opt_string(os)
{
}
使用'std :: vector'或'std :: array' – 2014-09-25 17:02:48