2015-04-22 2 views
-5

Я использую мост для одного класса, и я бы хотел создать std :: вектор std :: vector моста.C++ Мост шаблон и умный указатель

Пока вектор моста работает.

Например:

std::vector<Bridge> lBridge(5) 

вектор вектора не работает. Например:

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

Когда я создаю вектор вектора, он идет к этому конструктору Bridge (Const Bridge & оригинал) и оригинал 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; 
} 
+2

StackOverflow - сайт вопросов и ответов. В чем вопрос? – Drop

+0

Как вы на самом деле обращаетесь к вектору векторов 'lBridge'? –

+3

Я думаю, что шаблон моста не связан с вопросом – gomons

ответ

0

Вы не смогли сказать, что означает «не работает», а также то, что вы ожидали.

Мое предположение, что вы абсолютно положительно, хотите все мосты, чтобы быть по умолчанию инициализируется, а не то, что вы написали, что в копию вектора мостов в каждую запись вектора-из -векторы.

Для этого вам необходимо создать вектор пустых векторов, а затем изменить размер каждого из отдельных векторов. Или, альтернативно, создать пустой вектор векторов, затем emplace_back отдельных векторов по одному.

Смежные вопросы