返回std :: vector <std :: unique_ptr <object>&gt;的方法

时间:2015-06-22 05:48:49

标签: c++

作为a Thread的延续,我遇到了一个问题 写一个返回的类的方法:

std::vector<std::unique_ptr<Object>> 

写入这样的返回类型时会出现编译器错误。删除操作数或某些内容存在一些问题......

通常,我想编写一个初始化vector并返回它的方法。

有人可以帮我怎么写吗?

编辑:

我得到: 试图引用已删除的函数h:\plikiprogramów(x86)\ microsoft visual studio 12.0 \ vc \ include \ xmemory0

这里我有以下代码段。我可以创建这样的方法吗?

std::vector<std::unique_ptr<Object>> Class::TestMethod(int param)
{       
    std::vector<std::unique_ptr<Object>> array;

    auto day = std::make_unique<Object>();          
    array.push_back(day);

    return array;
}

2 个答案:

答案 0 :(得分:4)

您的错误实际上来自:

private static final String ACTION_BT_HEADSET_STATE_CHANGED  = "android.bluetooth.headset.action.STATE_CHANGED";
private static final int STATE_CONNECTED = 0x00000002; 
private static final int STATE_DISCONNECTED  = 0x00000000;  
private static final String EXTRA_STATE = "android.bluetooth.headset.extra.STATE";

private BroadcastReceiver mBlueToothHeadSetEventReceiver = new BroadcastReceiver() {

@Override
public void onReceive(Context context, Intent intent) {
    try {
        String action = intent.getAction();

        if(action == null)
            return;

        if(action.equals(ACTION_BT_HEADSET_STATE_CHANGED)){
            int extraData = intent.getIntExtra(EXTRA_STATE  , STATE_DISCONNECTED);
            if(extraData == STATE_CONNECTED ){

                //TODO :

            }else if(extraData == STATE_DISCONNECTED){

                //TODO:
            }
        }
        } catch (Exception e) {

        //TODO:

        }
}
};

这会尝试在矢量中放置array.push_back(day); 的副本,这是不允许的,因为它是唯一的。

相反,你可以写day但是以下会更好,取代array.push_back( std::move(day) );

auto day...

答案 1 :(得分:2)

删除protected $except = [ '/api/v1/list', //This route won't have CSRF protection ]; 的复制构造函数。这导致了一个问题:

std::unique_ptr

使用

array.push_back(day);