2015-04-22 85 views
-5

我为一个类使用一个桥,并且我会生命创建一个std ::向量的std ::向量桥。C++桥梁模式和智能指针

虽然桥梁的矢量工作。

例如:

std::vector<Bridge> lBridge(5) 

矢量的矢量不工作。 例如:

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

当我创建载体的载体,它进入这个构造桥(常量桥&原件),以及原来是空...

这是我的代码:

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; 
} 
+2

StackOverflow是一个问题解答网站。什么是问题? – Drop

+0

你怎么实际访问矢量的'lBridge'矢量? –

+3

我认为Bridge模式与 – gomons

回答

0

你没有说什么“不工作”的意思,以及你预期会发生什么。

我最好的猜测是,你绝对肯定地希望所有的网桥都是默认初始化的,而不是你写的,这是拷贝一个向量的桥梁向量 - - 载体。

为此,您必须创建一个空向量向量,然后调整每个向量的大小。或者,也可以创建一个向量的空向量,然后逐个创建一个向量。