2015-04-22 84 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

你沒有說什麼「不工作」的意思,以及你預期會發生什麼。

我最好的猜測是,你絕對肯定地希望所有的網橋都是默認初始化的,而不是你寫的,這是拷貝一個向量的橋樑向量 - - 載體。

爲此,您必須創建一個空向量向量,然後調整每個向量的大小。或者,也可以創建一個向量的空向量,然後逐個創建一個向量。