错误:请求“v”中的成员“stor_begin”,该成员的非类类型为“igraph_vector_t*”
error: request for member ‘stor_begin’ in ‘v’, which is of non-class type ‘igraph_vector_t*’
好吧,我想这样做,
"...由于 vt 是 Stl_To_Igraph_vector_ptr_t 内在堆栈上分配的向量(即您只是将其声明为局部变量并且没有使用 malloc 分配它),因此一旦函数返回,它就会不复存在。您在igraph_vector_ptr_t中存储了一个指向 vt 的指针,但当您退出函数时,该指针将变为无效,这就是您稍后收到错误的原因。你必须使vt成为igraph_vector_ptr_t,如果你想让它比转换函数活得更久,就使用malloc来分配它。它被张贴在 使用 std::vector 与 Igraph, 我不知道如何填充向量 v en 下一个代码,
#include <igraph.h>
#include <stdlib.h>
int print_vector(igraph_vector_t *v) {
long int i, l=igraph_vector_size(v);
for (i=0; i<l; i++) {
printf(" %li", (long int) VECTOR(*v)[i]);
}
printf("n");
}
int main() {
igraph_vector_ptr_t vecs;
long int i;
igraph_vector_ptr_init(&vecs, 3);
for (i=0; i<igraph_vector_ptr_size(&vecs); i++) {
VECTOR(vecs)[i] = calloc(1, sizeof(igraph_vector_t));
igraph_vector_init( (igraph_vector_t*)VECTOR(vecs)[i], 10);
}
igraph_vector_t *v;
v=(igraph_vector_t*)malloc(sizeof(igraph_vector_t));
igraph_vector_init(v, 10);
VECTOR(v)[0]=1;//-------??????????
igraph_vector_ptr_set(&vecs,0,v);
for (i=0; i<igraph_vector_ptr_size(&vecs); i++) {
print_vector( (igraph_vector_t*)VECTOR(vecs)[i]);
igraph_vector_destroy( (igraph_vector_t*)VECTOR(vecs)[i]);
free(VECTOR(vecs)[i]);
}
igraph_vector_ptr_destroy(&vecs);
igraph_vector_destroy(v);
return 0;
}
v
是一个指针,看起来VECTOR
希望它的参数是一个值。所以把VECTOR(v)
改成VECTOR(*v)
.
相关文章:
- 根据模板类型选择类模板的成员类型?
- 函数模板签名中忽略的成员类型def 的访问说明符
- 在C++如何从数组中提取成员并返回成员类型的数组?
- C++从成员类型中扣除类型的功能模板?
- 无法初始化以 std::byte 作为成员类型的位字段
- 构造函数可以更改默认成员类型吗?
- 使用相同方法但不同成员类型构建类的最佳方法
- 允许通过指向方法的成员参数的指针来推断模板参数所指向的成员类型
- 使用 std::条件根据模板参数选择成员类型
- CRTP:如何推断要用作返回类型的成员类型?
- 对成员类型的成员方法使用 std::result_of<>
- C :可以从类及其受保护的成员类型继承可以继承吗?
- 如何在不指定不必要的模板参数的情况下使用模板类的成员类型
- 基类数据成员类型取决于派生类
- C 多态性:允许模棱两可的成员类型
- 使用使用成员类型别名的构造函数来推论类模板参数
- 获取与在模板参数中传递的函数成员类型相同的类
- 如果静态成员未初始化并且成员类型是类本身,该怎么办?
- boost::bind 无法绑定到纯虚拟基类中定义的非静态函数模板成员类型
- 将联合强制转换为其成员类型之一