我为一个类使用一个桥,我会生活一个std :: vector of std :: vector of the bridge。
虽然桥梁的矢量正在发挥作用。
例如:
std::vector<Bridge> lBridge(5)
矢量矢量不起作用。 例如:
std::vector<std::vector<Bridge>> lBridge(5,std::vector<Bridge>(4))
当我创建向量的向量时,它会转到此构造函数Bridge(const Bridge&amp; original),而原始为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;
}
答案 0 :(得分:0)
你没有说出什么&#34;没有工作&#34;意味着你预期会发生什么。
我最好的猜测是,你绝对,积极地希望所有的网桥都默认初始化,而不是你所写的,即复制一个桥梁向量矢量矢量的输入。
为此,您必须制作一个空矢量矢量,然后调整每个矢量的大小。或者,创建一个空的矢量矢量,然后一次emplace_back
个个矢量。