0
我有一個函數,只有一個參數,我不想更新這些調用很多調用。但是我想從其他一些特殊的地方調用這個函數,但是在這種情況下,它應該另外填充一個我將傳遞一些數據的向量。可選的傳遞對象通過引用功能
我知道我可以創建NULL
指針默認參數爲std::vector
容器內,然後,如果是空,跳過做任何額外的操作,如果它是一個有效的指針 - 收集數據,vector
。不過,我想嘗試使用boost::optional
。
請參閱下面的代碼。它編譯和工作,但這種方法是好的,或者我不應該這樣做,並更好地使用原始指針?
#include <boost/optional.hpp>
#include <boost/none_t.hpp>
#include <vector>
//header file declaration
int doAction(
int value,
char *msg = NULL,
boost::optional<std::vector<int>&> optionalNumberVec = boost::none);
//main.cpp
int doAction(int value, char* msg, boost::optional<std::vector<int>&> optionalNumberVec)
{
//do main actions here
//...
//...
//end of main action
//get additional information to table
if (optionalNumberVec)
{
optionalNumberVec.get().push_back(5);
optionalNumberVec.get().push_back(3);
}
return 1;
}
int main()
{
std::vector<int> numVec;
boost::optional<std::vector<int>&> optionalNumberVec(numVec);
doAction(2);
doAction(2, NULL, optionalNumberVec);
return 0;
}
http://codereview.stackexchange.com/可能更合適。 – Jarod42
在這個例子中傳遞一個指針沒什麼問題,爲什麼它會複雜化? – keith
@ Jarod42, 謝謝,下次我會記得在那裏發佈代碼評論。 keith, 因爲我前段時間聽說過boost :: optional概念,如果我不使用它,所以我可能會忘記它。如果我在一些函數中實現它,那麼當它更有用時,我會記住它。 – user7242858