我正在使用 PBC 库( http://crypto.stanford.edu/pbc/manual/ )做我的第一步,我有一个非常基本的问题。
我有一个矢量图
std::vector<element_t> h;
我正在尝试用 element_t 对象填充它,它们是这个库中几乎所有东西的基本构建块。我这样做循环如下
element_t z[size];
// Pick random z_i and initialize h = g^z_i
for(int i = 0; i<size; i++)
{
element_init_Zr(z[i], pairing);
element_random(z[i]);
element_printf("created random z[%i] = %B\n", i, z[i]);
element_t tmp;
element_init_G1(tmp, pairing);
element_pow_zn(tmp, g, z[i]);
element_printf("tmp is %B\n", tmp);
h.push_back(tmp);
}
这种尝试会导致一条很长的错误消息,我不太明白,但我认为这意味着像 element_t 实际上不是 element_t 所以不要用那个填充向量......
如果我将向量更改为采用 element_t * 的向量,那么它会编译,但最后由于某种原因所有指针都指向同一个元素(指向最后一个推入向量的元素)。
当我尝试类似 element_t tmp = new element_t(); 然后我得到
error: array must be initialized with a brace-enclosed initializer
我真的不明白我做错了什么(我对 c++ 也很陌生)所以我会很感激任何有用的建议。如何正确初始化包含 element_t 对象的向量?