我将团队作为Team对象的数组,匹配是Team对象中的Match对象数组。 thisMatch
被声明为:
Match* thisMatch = new Match();
这就是我要做的事情:
&(teams[i].matches[foundMatches]) = thisMatch;
// I also tried another method:
(tams[i].matches + foundMatches) = thisMatch;
其中foundMatches
是一个int。
但是,无论我做什么,我都会收到这个编译错误:
error: lvalue required as left operand of assignment
&teams[i].matches[foundMatches] = thisMatch;
^
任何人都有任何关于可能出错的想法?如果需要,我可以提供更多信息,但我认为大多数信息都不相关。
答案 0 :(得分:1)
您要做的是将变量分配给常量值。 teams[i].matches[foundMatches]
的地址已经预定义(在您声明数组时)并且无法更改。
你要做的是改变teams[i].matches[foundMatches]
的内容(进一步我假设这是一个Match
对象,因为你说匹配是团队中匹配对象的数组对象)。改变内容可以通过以下方式完成:teams[i].matches[foundMatches] = *thisMatch
,即将thisMath
的内容*thisMath
分配给数组条目。
除非您之前或之后没有使用thisMath
进行任何无法直接对teams[i].matches[foundMatches]
进行的操作,否则您可以使用teams[i].matches[foundMatches] = Match()
并实例化对象,而不是分配内存并将其复制到teams[i].matches[foundMatches]
,以强制解除后续分配。
注意:请确保您在Match
课程中实施了CTOR / CCTOR,因为该副本将涉及其中一个。
答案 1 :(得分:0)
teams[i].matches[foundMatches] = thisMatch;
如果假设matches
包含指向匹配的指针数组,则应声明:
Match **matches;
然后你应该用:
分配它team[i].matches = new (Match*)[num];
然后上述作业将有效。