• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C++ std::weak_ptr类代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了C++中std::weak_ptr的典型用法代码示例。如果您正苦于以下问题:C++ weak_ptr类的具体用法?C++ weak_ptr怎么用?C++ weak_ptr使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。



在下文中一共展示了weak_ptr类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: initialize

	void initialize(std::weak_ptr<scoped_signal_mask>& sigmask_wptr)
	{
		static std::mutex mutex_;
		std::lock_guard<std::mutex> lk(mutex_);
		sigmask_sptr_ = sigmask_wptr.lock();
		if (!sigmask_sptr_) {
			signal_set sigset{ SignalNumber... };
			sigmask_sptr_ = std::make_shared<scoped_signal_mask>(sigset);
			sigmask_wptr = sigmask_sptr_;
		}
	}
开发者ID:seto1221,项目名称:slib,代码行数:11,代码来源:shared_scoped_signal_mask.hpp


示例2:

 void
 GenericAudioMixer::setSourceGain(std::weak_ptr<ISource> source, float gain)
 {
     auto s = source.lock();
     if(s) {
         auto hash = std::hash<std::shared_ptr<ISource>>()(s);
         
         m_inGain[hash] = std::max(0.f, std::min(1.f, gain));
         
     }
 }
开发者ID:amitkumar3968,项目名称:VideoCore,代码行数:11,代码来源:GenericAudioMixer.cpp


示例3:

//------------------------------------------//
// Texture2DAssetLoader::StartupLoader				
//------------------------------------------//
bool Texture2DAssetLoader::StartupLoader(std::weak_ptr<class Renderer> renderer)
{
	if (renderer.lock() == nullptr)
	{
		//Fail something
		return false;
	}

	mWeakRenderer = renderer;
	return true;
}
开发者ID:TaintedGear,项目名称:GameFramework,代码行数:14,代码来源:Texture2DAssetLoader.cpp


示例4: setAssociatedNode

void ConstraintComponent::setAssociatedNode(std::weak_ptr<kitsune::scenegraph::Node> AssociatedNode)
{
	auto associated = AssociatedNode.lock();
	if (!associated)
		return;

	associatedNodeComponentAddedListener = associated->addComponentAddedEvent(std::bind(&ConstraintComponent::onNodeAddComponent, this, std::placeholders::_1));
	associatedNodeComponentRemovedListener = associated->addComponentRemovedEvent(std::bind(&ConstraintComponent::onNodeRemoveComponent, this, std::placeholders::_1));

	createConstraint();
}
开发者ID:shirayukikitsune,项目名称:SceneGraph,代码行数:11,代码来源:ConstraintComponent.cpp


示例5: return_to_pool

void memory_pool::return_to_pool(const std::weak_ptr<memory_pool> &self_weak, std::uint8_t *ptr)
{
    std::shared_ptr<memory_pool> self = self_weak.lock();
    if (self)
        self->return_to_pool(ptr);
    else
    {
        log_debug("dropping memory because the pool has been freed");
        delete[] ptr;
    }
}
开发者ID:rtobar,项目名称:spead2,代码行数:11,代码来源:common_memory_pool.cpp


示例6:

void Renderable2DBox::Render(std::weak_ptr<const RendererBase> renderer) const
{
	std::shared_ptr<const RendererBase> rendererShared = renderer.lock();
	if (rendererShared != nullptr)
	{
		rendererShared->DrawColoredLine(m_Points[0], m_Points[2], m_Color);
		rendererShared->DrawColoredLine(m_Points[2], m_Points[3], m_Color);
		rendererShared->DrawColoredLine(m_Points[3], m_Points[1], m_Color);
		rendererShared->DrawColoredLine(m_Points[1], m_Points[0], m_Color);
	}
}
开发者ID:joisbp22,项目名称:DemoProject,代码行数:11,代码来源:Renderable2DBox.cpp


示例7: Add

	// STATIC:
	void PhysicsEntityContainer::Add(std::weak_ptr<PhysicsEntity> newObject)
	{
		// Was this initalized
		if(!PhysicsEntityContainer::verifyInstantiation()) return;
		
		// Check if the pointer is empty
		if(newObject.expired()) return;

		// Add it
		PhysicsEntityContainer::_instance->_listOfContainedObjects.push_front(newObject);
	}
开发者ID:JISyed,项目名称:HedronSpace,代码行数:12,代码来源:PhysicsEntityContainer.cpp


示例8: get

 std::experimental::optional<T> get(std::weak_ptr<handle<T>> handle_wp)
 {
   auto hid_sp = handle_wp.lock();
   if (!hid_sp) {
     return std::experimental::optional<T>{};
   }
   handle<T>* hid = hid_sp.get();
   if(handle_map[hid->index] != hid_sp){
     return std::experimental::optional<T>{};
   }
   return std::experimental::make_optional(container[hid->index]);
 }
开发者ID:BreezeEngine,项目名称:breezecpp.old,代码行数:12,代码来源:handlvec.hpp


示例9: LOG

 nCursesProgressWindow::nCursesProgressWindow(std::weak_ptr<Window> parentWnd){
     LOG("Progress window constructor : ", this);
     if(auto spTmp = parentWnd.lock()){
         parentWindow = parentWnd;
         posx = spTmp->getRows()-1;
         posy = spTmp->getColumns() - width;
         file_size = dynamic_cast<nCursesDisplayWindow*>(&*spTmp)->file_size;
         nCursesWhnd = ::newwin(height, width, posx, posy);
         ::box(nCursesWhnd, 0, 0);
     }else
         throw miniReader::Exception::miniRuntimeException( __FILE__, ":", __LINE__, "Error creating object", this);
 }
开发者ID:0xBaca,项目名称:MiniReader,代码行数:12,代码来源:Windows.cpp


示例10: GetPlayerList

int GetPlayerList(const Data& data, std::weak_ptr<CPlayer> player)
{
    if (!SendCheck(player))
    {
        return -1;
    }
    PBS2CGetPlayerListRes res;
    res.set_getplayerlistresult(0);
    PlayerManager::GetInstance().PlayerList2PB(res);
    player.lock()->GetSocket().lock()->SendBuff((int)TypeS2CGetPlayerListRes, res);
    return 0;
}
开发者ID:zmxaini10250,项目名称:GameServer,代码行数:12,代码来源:Process.cpp


示例11: lg

void ms::SurfaceStack::destroy_surface(std::weak_ptr<ms::Surface> const& surface)
{
    {
        std::lock_guard<std::mutex> lg(guard);

        auto const p = std::find(surfaces.begin(), surfaces.end(), surface.lock());

        if (p != surfaces.end()) surfaces.erase(p);
        // else; TODO error logging
    }

    emit_change_notification();
}
开发者ID:TomasMM,项目名称:emir,代码行数:13,代码来源:surface_stack.cpp


示例12: makeCallback

std::function<void(folly::dynamic)> makeCallback(
    std::weak_ptr<Instance> instance, const folly::dynamic& callbackId) {
  if (!callbackId.isInt()) {
    throw std::invalid_argument("Expected callback(s) as final argument");
  }

  auto id = callbackId.getInt();
  return [winstance = std::move(instance), id](folly::dynamic args) {
    if (auto instance = winstance.lock()) {
      instance->callJSCallback(id, std::move(args));
    }
  };
}
开发者ID:Sihak,项目名称:react-native-pipay,代码行数:13,代码来源:CxxNativeModule.cpp


示例13: invalid_parameter

	void model::move_creature
		(const std::weak_ptr<creature>& c, int x, int y)
	{
		std::shared_ptr<creature> csp(c.lock());

		if (!csp)
		{
			std::cerr << "Invalid creature for movement." << std::endl;
			throw invalid_parameter();
		}

		map_.move_creature(csp, x, y);
	}
开发者ID:rollingthunder,项目名称:ki2-biosim,代码行数:13,代码来源:model.cpp


示例14: client_closed

void MAVConnTCPServer::client_closed(std::weak_ptr<MAVConnTCPClient> weak_instp)
{
	if (auto instp = weak_instp.lock()) {
		bool locked = mutex.try_lock();
		logInform(PFXd "Client connection closed, id: %p, address: %s",
				conn_id, instp.get(), to_string_ss(instp->server_ep).c_str());

		client_list.remove(instp);

		if (locked)
			mutex.unlock();
	}
}
开发者ID:FOXTTER,项目名称:mavros,代码行数:13,代码来源:tcp.cpp


示例15: go

 std::weak_ptr<vertex> go (char c) {
     std::weak_ptr<vertex> next;
     auto itr = children.find(c);
     if (itr != children.end()) {
         next = itr->second;
     } else {
         if (parent.lock().get() == NULL) {
                 next = root;
             }
             else next = get_link().lock()->go(c);
     }
     return next;
 }
开发者ID:OlgaGorbacheva,项目名称:aho-corasik,代码行数:13,代码来源:main.cpp


示例16: onCloudProvResponseSafetyCb

 void CloudResource::onCloudProvResponseSafetyCb(const HeaderOptions& headerOptions,
                                                         const OCRepresentation& rep,
                                                         const int eCode,
                                                         ESCloudResourceCb cb,
                                                         std::weak_ptr<CloudResource> this_ptr)
 {
     OIC_LOG(DEBUG, ES_CLOUD_RES_TAG, "onCloudProvResponseSafetyCb");
     std::shared_ptr<CloudResource> Ptr = this_ptr.lock();
     if(Ptr)
     {
         cb(headerOptions, rep, eCode);
     }
 }
开发者ID:drashti304,项目名称:TizenRT,代码行数:13,代码来源:CloudResource.cpp


示例17:

KeyFrameAnimationState::KeyFrameAnimationState(std::weak_ptr<KeyFrameAnimated> animatable, AnimationUpdatedCallback refresh_animation_state):
    animatable_(animatable),
    refresh_animation_state_(refresh_animation_state) {

    auto anim = animatable_.lock();
    on_animation_added_ = anim->signal_animation_added().connect(
        [this](KeyFrameAnimated* animatable, const std::string& name) {
            if(animatable->animation_count() == 1) {
                play_animation(name);
            }
        }
    );
}
开发者ID:Kazade,项目名称:KGLT,代码行数:13,代码来源:animation.cpp


示例18:

std::shared_ptr<CAnimTreeNode> CMetaTransPhaseTrans::VGetTransitionTree(const std::weak_ptr<CAnimTreeNode>& a,
                                                                        const std::weak_ptr<CAnimTreeNode>& b,
                                                                        const CAnimSysContext& animSys) const {
  std::shared_ptr<CAnimTreeNode> nA = a.lock();
  CAnimTreeEffectiveContribution cA = nA->GetContributionOfHighestInfluence();
  std::shared_ptr<CAnimTreeNode> nB = b.lock();
  CAnimTreeEffectiveContribution cB = nB->GetContributionOfHighestInfluence();
  float y2A = cA.GetSteadyStateAnimInfo().GetDuration() / cB.GetSteadyStateAnimInfo().GetDuration();
  float y1B = cB.GetSteadyStateAnimInfo().GetDuration() / cA.GetSteadyStateAnimInfo().GetDuration();

  nB->VSetPhase(zeus::clamp(0.f, 1.f - cA.GetTimeRemaining() / cA.GetSteadyStateAnimInfo().GetDuration(), 1.f));
  auto tsA = std::make_shared<CAnimTreeTimeScale>(
      a, std::make_unique<CLinearAnimationTimeScale>(CCharAnimTime{}, 1.f, x4_transDur, y2A), x4_transDur,
      CAnimTreeTimeScale::CreatePrimitiveName(a, 1.f, x4_transDur, y2A));
  auto tsB = std::make_shared<CAnimTreeTimeScale>(
      b, std::make_unique<CLinearAnimationTimeScale>(CCharAnimTime{}, y1B, x4_transDur, 1.f), x4_transDur,
      CAnimTreeTimeScale::CreatePrimitiveName(b, y1B, x4_transDur, 1.f));

  return std::make_shared<CAnimTreeTransition>(
      xc_, tsA, tsB, x4_transDur, xd_runA, x10_flags,
      CAnimTreeTransition::CreatePrimitiveName(tsA, tsB, x4_transDur.GetSeconds()));
}
开发者ID:AxioDL,项目名称:urde,代码行数:22,代码来源:CMetaTransPhaseTrans.cpp


示例19: GetHeroInfo

int GetHeroInfo(const Data& data, std::weak_ptr<CPlayer> player)
{
    if (!SendCheck(player))
    {
        return -1;
    }
    PBC2SGetHeroInfoReq req;
    req.ParseFromArray(data.buffer, data.bufferLength);

    std::weak_ptr<CHero> p = player.lock()->GetHeroData().GetHeroPack().GetHero(req.heroindex());
    if (p.expired())
    {
        return -1;
    }

    PBS2CGetHeroInfoRes res;

    p.lock()->HeroInfo2PB(*res.mutable_heroinfo());
    res.set_getheroinforesult(0);
    player.lock()->GetSocket().lock()->SendBuff((int)TypeS2CGetHeroInfoRes, res);
    return 0;
}
开发者ID:zmxaini10250,项目名称:GameServer,代码行数:22,代码来源:Process.cpp


示例20: LoginRegister

int LoginRegister(const Data& data, std::weak_ptr<CPlayer> player)
{
    if(player.expired())
    {
        return -1;
    }
    std::shared_ptr<CPlayer> playerPtr = player.lock();
    if (playerPtr->GetSocket().expired())
    {
        return -1;
    }

    PBC2SLoginRegisterReq req;
    req.ParseFromArray(data.buffer, data.bufferLength);

    PBS2CLoginRegisterRes res;
    if (DBServer::GetInstance().LoginRegister(req.username().c_str(), req.password().c_str(), res) != 0)
    {
        return -1;
    }
    player.lock()->GetSocket().lock()->SendBuff((int)TypeS2CLoginRegisterRes, res);
    return 0;
}
开发者ID:zmxaini10250,项目名称:GameServer,代码行数:23,代码来源:Process.cpp



注:本文中的std::weak_ptr类示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C++ std::wstring类代码示例发布时间:2022-05-31
下一篇:
C++ std::vector类代码示例发布时间:2022-05-31
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap