C++ 调用构造与函数原型混淆
我在下面的C++ 调用构造与函数原型混淆,c++,C++,我在下面的方法1中遇到问题。它在我声明(并构造)VAL的行中给出了警告原型函数未被调用(是否需要变量定义?)。当对紧接在其下方的复制的调用未注释时,我得到错误C2228(“.begin”的左侧必须有class/struct/union) 谷歌搜索为调用默认构造函数(即删除括号)提供了解决方案,但我没有使用默认构造函数,也不明白为什么它无法编译。注意method2编译得很好 static void method1(char const* filename) { vector
方法1
中遇到问题。它在我声明(并构造)VAL的行中给出了警告原型函数未被调用(是否需要变量定义?
)。当对紧接在其下方的复制的调用未注释时,我得到错误C2228(“.begin”的左侧必须有class/struct/union)
谷歌搜索为调用默认构造函数(即删除括号)提供了解决方案,但我没有使用默认构造函数,也不明白为什么它无法编译。注意method2
编译得很好
static void method1(char const* filename) {
vector<double> vals(istream_iterator<double>(ifstream(filename)), istream_iterator<double>());
//copy(vals.begin(), vals.end(), ostream_iterator<double>(cout, ","));
}
static void method2(char const* filename) {
vector<double> vals;
vals = vector<double>(istream_iterator<double>(ifstream(filename)), istream_iterator<double>());
copy(vals.begin(), vals.end(), ostream_iterator<double>(cout, ","));
}
static void method1(char const*filename){
向量VAL(istream_迭代器(ifstream(filename)),istream_迭代器();
//复制(vals.begin()、vals.end()、ostream_迭代器(cout,“,”));
}
静态无效方法2(字符常量*文件名){
向量VAL;
VAL=向量(istream_迭代器(ifstream(filename)),istream_迭代器());
复制(vals.begin()、vals.end()、ostream_迭代器(cout,“,”));
}
我的问题是,为什么编译器会将这个变量声明与函数原型混淆(在我看来,我已经用完全相同的语法编写了大量代码,而且以前从来没有遇到过这个问题),有人能指出这方面的好信息吗?谢谢
<>我使用Visual Studio 2008。 < P>这是C++中的一个怪癖,只有在你被它咬过之后才知道。
这是C++中的<> > > /> > < p>这是C++中的一个怪癖,只有在你被它咬过之后才知道。 这是C++中的<强> <强> >