Win7的64位误差可以标记错误的位置
cygwin的克++ 4.8.3(-std = GNU + 11)
我有一个小问题一点代码。
class InputClass {
private:
vector<string>& str;
istream in; // no code, no error
public:
InputClass(vector<string> str) : str(str) { }
}; // class InputClass
为什么“istream in”产生错误,为什么“str(str)”被标记为错误。当“istream in”时被删除,没有错误。
完全错误信息等:
g++ -Wall -Wunused-variable -std=gnu++11 -c -g -MMD -MP -MF "build/Debug/Cygwin64-Windows/main.o.d" -o build/Debug/Cygwin64-Windows/main.o main.cpp
In file included from /usr/lib/gcc/x86_64-pc-cygwin/4.8.3/include/c++/iostream:40:0,
from main.cpp:9:
/usr/lib/gcc/x86_64-pc-cygwin/4.8.3/include/c++/istream: In constructor 'InputClass::InputClass(std::vector<std::basic_string<char> >)':
/usr/lib/gcc/x86_64-pc-cygwin/4.8.3/include/c++/istream:606:7: error: 'std::basic_istream<_CharT, _Traits>::basic_istream() [with _CharT = char; _Traits = std::char_traits<char>]' is protected
basic_istream()
^
main.cpp:44:44: error: within this context
InputClass(vector<string> str) : str(str) { }
^
可能是一个很好的问题,请做一个完整的测试用例 - 提供一个main() – 2014-10-27 21:40:40
问题是,为什么“str(str)”有一个当“istream in”存在时出错,不存在时不出错?我并不十分关心“istream in”,因为(我认为)那是我的问题,而且我造成了错误。 – 2014-10-28 03:40:16