Я использую мост для одного класса, и я бы хотел создать 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;
}
Вы не смогли сказать, что означает «не работает», а также то, что вы ожидали.
Мое предположение состоит в том, что вы, безусловно, хотите, чтобы все мосты инициализировались по умолчанию, а не то, что вы написали, то есть копия вектор мостов в каждую запись вектора векторов.
Для этого вам нужно создать вектор пустых векторов, а затем изменить размер каждого из отдельных векторов. Или, альтернативно, создайте пустой вектор векторов, затем emplace_back
отдельные векторы по одному.