我有以下功能:
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
,但由于它已经被转换,因此我无法将其作为const引用。如果我只使用一个引用,那么cpplint会抱怨它必须是const或指针。
警告:这是非const引用吗?如果是这样,make const或使用指针:std :: vector&amp; vector [runtime / references] [2]
我应该忽略cpplint并使其成为引用,保留此代码(使用指针)或使其成为const引用并转换副本?
答案 0 :(得分:1)
如评论中所述,您的案例中的正确答案是:
void write_to_File(const std::vector<uint16_t>& vector) {
std::fstream file;
file.open(writePath, std::fstream::out | std::fstream::binary);
if (file.is_open()) {
const auto ptr = reinterpret_cast<const char*>(&vector[0]);
file.write(ptr, vector.size()*sizeof(uint16_t));
} else {
std::cout << "file not found!";
return;
}
file.close();
}
但是,我认为cpplint错误是错误的(当然这是一个意见问题)。我使用规则&#34;如果nullptr
是有效值,请使用指针,否则使用引用&#34;。