我在我的程序中使用boost共享指針,並且我有一個類作爲參數引用另一個對象。我碰到的問題是make_shared函數要求所有參數都是一個const引用,如果我的類的構造函數不允許const引用參數傳入,我會得到編譯錯誤。boost make_shared接受一個const引用。任何方式來解決這個問題?
有沒有人知道背後的原因這個?另外,我能做些什麼來解決這個問題嗎?什麼是給我的問題
代碼示例:
class Object
{
public:
Object(int& i)
{
i = 2;
}
};
int main(int argc, char *argv[])
{
int i = 0;
boost::shared_ptr<Object> obj = boost::make_shared<Object>(i);
return 1;
}
這導致指出以下
編譯器錯誤:make_shared.hpp:185:錯誤:沒有匹配函數調用`對象:對象(const int的&)」 注:考生:對象:對象(const對象&) 注:對象:對象(INT &)
如果對象構造函數的參數是一個const int,則可以使用。我很好奇爲什麼make_shared的行爲如此。
你能告訴我們一些代碼來演示如何使用'make_shared()'嗎? – quamrana 2009-09-03 15:06:48
的代碼片段發佈 – 2009-09-03 15:20:58