0
我今天剛遇到一個問題:下面的代碼似乎在MSVC++ 2010中工作,但不能與Clang LLVM 4.1(使用GNU ++ 11)一起工作。在C++中傳遞fstream參數作爲函數參數11
#include <fstream>
void foo(std::fstream& file){
file << "foo";
}
int main() {
std::fstream dummy("dummy");
foo(dummy);
return 0;
}
生成
Invalid operands to binary expression (std::fstream (aka basic_fstream<char>) and const char[4])
上鏘
。我認爲通過引用傳遞iostream參數將是C++中的常見做法。我甚至不確定這是否與叮噹聲,C++ 11或其他任何東西有關。
任何想法如何將流傳遞給函數呢?
該代碼是正確的。 [檢查它在這裏](http://liveworkspace.org/code/2bhYJa$2)自己與鏗鏘語+ 3.2。 – Ali
你是否缺少'#include'?如果不是,請發佈完整的[SSCCE](http://sscce.org/)。 –
ildjarn
你可以'#include'它允許你使用指針和引用,但是不能真正使用這些對象。另外,對於流,請傳遞基類。另一個問題:這是打算寫成流嗎?如果是,則使用'std :: ostream&out'作爲參數。如果它也應該被讀取,那麼使用'std :: iostream&stream'。只有當您需要特定於文件流的內容時,才使用代碼中的表單。 –