[英]Default ofstream class argument in function
我有功能。 如果用戶沒有在此函數中提供ofstream
元素:
bool isPolpierwsza(int, bool = false, ofstream = NULL);
比我想要“plik”
bool isPolpierwsza(int liczba, bool wypisz, ofstream plik)
為NULL
值。
我的編譯器放錯了:
2.9.cpp:5:48:錯誤:沒有可行的從'long'轉換為'ofstream'(又名'basic_ofstream')
bool isPolpierwsza(int, bool = false, ofstream = NULL);
如何設置ofstream的默認值被視為NULL
或“false”?
您可以使用兩個重載,其中一個不帶std::ofstream
參數:
bool isPolpierwsza(int liczba, bool wypisz)
{
return isPolpierwsza(liczba, wypisz, /* your own argument */);
}
您可以改為傳遞流緩沖區:
bool isPolpierwsza(int, bool = false, std::streambuf* osbuf = nullptr)
{
std::ostream os(osbuf? osbuf : std::cout.rdbuf());
os << "yay it works\n";
return false;
}
現在,這樣稱呼它:
std::ofstream ofs("myoutput.txt");
bool result = isPolpierwsza(42, true, ofs.rdbuf());
或者確實沒有參數。
首先,使用ostream而不是ofstream可能是有用的,因為這是更通用的並且被認為是更好的實踐。
然后,您可以簡單地指定'cout'而不是'NULL'。 NULL不起作用,因為ostream不是指針而是結構。 這意味着必須完全填寫結構,並且不能將其指定為NULL。 相反,你可以使用cout,比如
bool isPolpierwsza(int, bool = false, ostream& = cout);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.