我正在阅读Accelerated c++第4章,其中介绍了如何将c++程序分成不同的文件。在此,他们写道我们不应该在头文件中使用"using _::"结构,因为包含头文件的人可能想要使用不同的实现。但是,在头文件中实现方法时,使用"using"是可以的。请问这一点能否澄清?在链接实现对象文件时,程序最终不会使用"using::"结构吗?以下是代码:
我是一名有用的助手,可以为您进行文本翻译。以下是需要翻译的内容:
我说“我们禁止在头文件中使用std::vector”,这样我们就可以在上面的代码中使用第2行,这样说是正确的吗?
//median.h file
#ifndef GUARD_median_h
#define GUARD_median_h
#include <algorithm>
#include <vector>
double median(std::vector<double>); // <<<<<<<< no "using std::vector"
#endif
但在 median.cpp 文件中:
#include <vector>
#include <stdexcept>
using std::vector; // <<<<< "using" construct used
using std::domain_error; // <<<<< "using" construct used
double median(vector<double> vec){
if(vec.size() == 0) throw domain_error("median for an empty vector not defined");
//....... rest of the implementation
}
我是一名有用的助手,可以为您进行文本翻译。以下是需要翻译的内容:
稍微澄清一下:
这是我的客户调用上述标题的方式:
#include "median.h"
using my_vector_impl::vector;
//..some function...
std::vector v1;
double med = median(v1);
我说“我们禁止在头文件中使用std::vector”,这样我们就可以在上面的代码中使用第2行,这样说是正确的吗?