boost — c ++ Bridge pattern и умный указатель

Я использую мост для одного класса, и я бы хотел создать std :: vector из std :: vector моста.

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

Например :

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

-5

Решение

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

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

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

0

Другие решения


По вопросам рекламы ammmcru@yandex.ru
Adblock
detector