使用成员初始化进行元组初始化

时间:2016-04-08 03:39:11

标签: c++ initialization tuples

这是代码:

struct ListNode {
    int val;
    ListNode *next;
     ListNode(int x) : val(x), next(NULL) {}
};

std::tuple<int, ListNode*> head{0, &&ListNode(0)};

错误注释:

expected ‘}’ before ‘(’ token
我只是混淆了这里发生的事情,初始化列表是不是能够接受内部初始化?我阅读了cppreference.com和C ++入门。他们都没有像这样的用法样本。但是,我想我可以做这样的事情:

std::tuple<type, class*> n{ type_value, &&class_initialization }

而不是

std::tuple<type, class*> n{ type_value, class_reference_or_pointer }

1 个答案:

答案 0 :(得分:4)

  1. 您应该使用单个ListNode*来获取地址(即ListNode(0))。

  2. 您无法获取临时对象的地址(即ListNode node(0); std::tuple<int, ListNode*> head{0, &node}; )。

  3. 你可能想要:

    {{1}}