问题描述
我有一个出于各种原因而不允许具有复制构造函数的类(一个原因是该结构具有指向我既不想删除多次,也不想复制/克隆的数组的指针)它)。
我想用push函数构造对象。喜欢推到阵列上。我有以下测试代码,但似乎无法使用构造调用它(除非它是我明确不想要的复制构造函数)。
要清楚,在准备好将其放置在数组中之前,不应构造该对象,这就是为什么我使用new放置的原因
#include<utility>
#include<cstdlib>
#include<new>
struct Test{
int a,b,*p;
Test(int a,int b) : a(a),b(b),p(nullptr) { }
Test(const Test&) = delete;
};
Test*ptest;
int offset;
template<typename... Args>
void Push(Args&&... args) {
new (&ptest[offset++]) Test(std::forward<Args>(args)...);
}
int main(){
ptest = (Test*)malloc(sizeof(Test)*10); //Array of 10
Push(Test{5,1});
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)