假設我的類有一個方法必須從其中調用其他遞歸方法。遞歸std :: functional與遞歸匿名命名空間函數。哪一個使用?
我.h文件中是這樣的:
class MyClass()
{
public:
void foo();
};
我的問題是,這些實現會更好(忽略無限循環):
namespace
{
void myRecursiveFunction()
{
myRecursiveFunction();
}
}
void MyClass::foo()
{
myRecursiveFunction();
}
或
void MyClass::foo()
{
std::function<void()> myRecursiveFunction =
[&]()
{
myRecursiveFunction();
};
myRecursiveFunction();
}
,給出myRecursiveFunction()
只會從foo()
?
當然,在現實世界myRecursiveFunction()
確實的東西。我只是不想用不需要的信息填充代碼。
如果我只在一種方法中使用它,我所有的班級都可以訪問myRecursiveFunction
,這可以嗎?
第二個例子甚至編譯?爲什麼你想要創建一個額外的推理層?我沒有得到你問題的*點*。 – YSC
@YSC大概這不是什麼都沒有:從所說的東西中引用了一個private-to-something函數。 – user2864740
@YSC無論如何,wrt遞歸lambdas:http://stackoverflow.com/questions/2067988/recursive-lambda-functions-in-c11,http://stackoverflow.com/questions/14531993/can-lambda-functions-be -recursive – user2864740