我有一个对象"a",我想将它复制到一个对象"b",但修改它有点不修改"a".然后,这将是这样的:
class SomeClass{
public:
int a;
public:
SomeClass(int _a) {a = _a;}
SomeClass& doStuff() {++a; return *this;}
};
const SomeClass a( 25);
const auto b = SomeClass( a).doStuff();
Run Code Online (Sandbox Code Playgroud)
这很好用,但是我可以说我现在/不想写"a"的类型,然后我想出了这个解决方案:
const auto b = std::remove_const<decltype( a)>::type( a).doStuff();
Run Code Online (Sandbox Code Playgroud)
我这样做了吗?对此有一个不那么难看的解决方案吗?(我不必两次输入"a".)使用汽车或其他东西.优选不是宏.
怎么样
template<typename T>
T copy(const T& t) { return T(t); }
const auto b = copy(a).doStuff();
Run Code Online (Sandbox Code Playgroud)