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