None
我想将testArray强制转换为char *,以便我可以写入文件。为什么这个例子不起作用?我收到以下错误:
struct test{
int x;
float y;
float array[100];
test(){
x = 0;
y = 1.0;
for(int i=0; i<100; i++){
array[i] = i;
}
}
void print(){
std::cout << x << " " << y << std::endl;
for(int i=0; i<100; i++){
std::cout << i << " ";
}
}
};
std::vector<test> testArray;
testArray.push_back(test());
reinterpret_cast<char*>(testArray.front()), 2 * sizeof(test);
编辑:
现在我有一个如何读取和编写复杂结构向量到文件的工作示例。
file.cpp:71: error: invalid cast from type '__gnu_cxx::__alloc_traits<std::allocator<test> >::value_type {aka test}' to type 'char*'
reinterpret_cast<char*>(testArray.front()), 2 * sizeof(test);
^
答案 0 :(得分:2)
front()
会返回对const
的第一个元素的vector
引用,因此其类型为struct test
。如果没有自定义类型转换运算符,则无法将struct
强制转换为指针。
您可以使用const
或front()
的{{1}}指针,也可以改为取消引用地址data()
:
begin()
取消引用auto x = reinterpret_cast<char*>(&(*testArray.begin()));
cout << (void*)x << endl;
可以避免抛弃begin()
-