c ++桥模式和智能指针

时间:2015-04-22 16:58:58

标签: c++ boost vector bridge

我为一个类使用一个桥,我会生活一个std :: vector of std :: vector of the bridge。

虽然桥梁的矢量正在发挥作用。

例如:

std::vector<Bridge> lBridge(5)

矢量矢量不起作用。 例如:

std::vector<std::vector<Bridge>> lBridge(5,std::vector<Bridge>(4))

当我创建向量的向量时,它会转到此构造函数Bridge(const Bridge&amp; original),而原始为NULL ...

这是我的代码:

Bridge.h

#ifndef BRIDGE_H
#define BRIDGE_H
#pragma once

#include <MyObject.h>
#include <boost/make_shared.hpp>

class Bridge{

public :

    Bridge(const Bridge & original);
    Bridge(const MyObject & innerObject);
    Bridge(){};
    Bridge& operator=(const IBridge& original);
private :
    boost::shared_ptr<MyObject> mMyObjectPtr;
};

#endif

Bridge.cpp

#include<Bridge.h>



Bridge::Bridge(constBridge& inOriginal){
    mMyObjectPtr = inOriginal.mMyObjectPtr->clone();
}

Bridge::Bridge(const MyObject& inInnerObject){
    mMyObjectPtr = inInnerObject.clone();
}

Bridge& Bridge::operator=(const Bridge& inOriginal){

    if (this != &inOriginal){
        mMyObjectPtr = inOriginal.mMyObjectPtr->clone();
    }
    return *this;
}

1 个答案:

答案 0 :(得分:0)

你没有说出什么&#34;没有工作&#34;意味着你预期会发生什么。

我最好的猜测是,你绝对,积极地希望所有的网桥都默认初始化,而不是你所写的,即复制一个桥梁向量矢量矢量的输入。

为此,您必须制作一个空矢量矢量,然后调整每个矢量的大小。或者,创建一个空的矢量矢量,然后一次emplace_back个个矢量。