1

我正在使用 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 对象的向量?

4

0 回答 0