var input = [{firstProperty: 'something', money: 3, user: 'john-smith'}, {firstProperty: 'somethingDiff', money: 7, user: 'john-smith'}, {firstProperty: 'somElse', money: 14, user: 'jane-doe'},{firstProperty: 'someOtherThing', money: 2, user: 'jane-doe'}]
var result = Array.from(input.reduce((m, { user, money }) =>
m.set(user, { user, totalMoney: (m.get(user) && m.get(user).totalMoney || 0) + money })
, new Map)
, ([ _, d ]) => d)
console.log(result)
当我编译它时,出现以下错误:
“返回”-结构中包含对象,无法复制。
我只需要创建一个struct或class对象并返回它,我就不想进行任何复制。
我尝试使用&和*组合,但是没有用。我尝试了一个类而不是struct,但也没有用。
我还尝试了如下所示的课程:
struct Person {
string FirstName;
string LastName;
};
class Builder {
public:
Person Builder::Build() {
Person person;
person.FirstName = "FirstName";
person.LastName = "LastName";
return person;
};
};
在运行时通过OnInit()方法访问person.FirstName时,它使我无效的指针访问。
答案 0 :(得分:0)
找到了答案,但是如何避免内存泄漏?使用后如何破坏对象及其指针?
class cPerson {
public:
string FirstName;
string LastName;
};
class cBuilder {
public:
cPerson* Build() {
cPerson* person = new cPerson();
person.FirstName = "firstname";
return person;
};
};
cBuilder builder;
cPerson* person = builder.Build();
string age = person.FirstName;
答案 1 :(得分:0)
您可以通过delete(person);
删除对象,如果不确定该对象不是null,最好检查if(CheckPointer(object)==POINTER_DYNAMIC)delete(object);
总体上,应该将所有此类对象作为具有相应变量名称的变量,或将它们全部保留在集合中并在最后销毁整个集合。您还可以创建对象的全局变量(在OnInit之前,而不是在任何函数内部),然后在程序结束时将其删除。
关于最初的问题-您不能在结构中包含字符串,而只能使用基元