【发布时间】:2017-11-10 13:28:24
【问题描述】:
我有以下功能:
void write_to_File(std::vector<uint16_t> *vector) {
std::fstream file;
file.open(writePath, std::fstream::out | std::fstream::binary);
if (file.is_open()) {
file.write(reinterpret_cast<char*>(&(*vector)[0]), vector->size()*sizeof(uint16_t));
} else {
std::cout << "file not found!";
return;
}
file.close();
}
这个方法实际上并没有改变vector,但是由于它被强制转换,我不能让它成为一个常量引用。如果我只使用一个引用,那么 cpplint 会抱怨它必须是 const 或指针。
警告:这是一个非常量引用吗?如果是这样,请使用 const 或使用指针:std::vector &vector [runtime/references] [2]
我应该忽略 cpplint 并将其设为引用,保留此代码(使用指针)还是将其设为 const 引用并转换副本?
【问题讨论】:
-
通过 const 引用传递。你可以投到
const char*。 -
@juanchopanza 我会因为没有想到这一点而将头撞到墙上,谢谢。
-
你没有使用指针中固有的任何东西,通过引用传递。
-
[OT]:注意字节顺序问题。
标签: c++ pointers vector reference