表述不清。不知道你在问啥。
不过扫了一眼你的代码,似乎存在move之后还在使用的string
【 在 bihai (new half life) 的大作中提到: 】
: 标 题: std::string&&用法
: 发信站: 水木社区 (Wed Oct 21 10:25:18 2020), 站内
:
: 有一个类我需要加一个有默认值的参数,一般调用时使用的都是字符串const char[]作为参数,就是原来的Type::NAME_。现在需要有的时候传入别的名字。
: template <Type>
: class A {
: public:
: A(X x, std::string name = Type::NAME_):A(.., std::move(name)){}
: A(X x, ..., std::string name):b_(..., std::move(name)){
: b_.emplace(,,std::move(name));
: }
: private:
: B b_;
: };
:
: class B {
: public:
: B(..., std::string name):name_(std::move(name)),c_(...){
: c_->Add(name_); // was Add(Type::NAME_);
: }
: ~B(){c_->Remove(name_); // was Remove(Type::NAME_);
: private:
: std::string name_;
: C* c_;
: }
:
: 使用的时候,原来A a(...);即可,现在A a(..., "dfddf");
:
: 问题是,我在哪里需要std::move?函数定义需要吗?
: --
: ※ 修改:·bihai 于 Oct 21 10:53:46 2020 修改本文·[FROM: 73.158.253.*]
: ※ 来源:·水木社区
http://www.newsmth.net·[FROM: 174.194.198.*]
--
修改:bihai FROM 73.158.253.*
FROM 76.126.252.*