有一个类我需要加一个有默认值的参数,一般调用时使用的都是字符串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 FROM 73.158.253.*
FROM 174.194.198.*