0

这工作正常:

udtCandidate firstCand;
firstCand=uSeqs[i].Candidates.front();

这将创建 udtCandidate 的副本。

但我需要引用它,而不是副本。

然而

udtCandidate firstCand;
firstCand=&uSeqs[i].Candidates.front();

不起作用。编译器告诉我没有二元运算符“=”接受“udtCandidate *”类型的右手操作数。

有人知道我做错了什么吗?

声明是:

struct udtCandidate
{
    udtJoinFeatures JoinFeaturesLeft;
    udtJoinFeatures JoinFeaturesRight;
    udtByteFeatures ByteFeaturesLeft;
    udtByteFeatures ByteFeaturesRight;
    int iHPUnitIDLeft;
    int iHPUnitIDRight;
    double targetCost;
    vector<unsigned long>bestPath;
    double bestPathScore;
    bool hasAncestor;
};
struct udtCandidateSequence
{
    double Score;
    vector<udtCandidate>Candidates;
};
4

1 回答 1

1

要存储引用而不是值,您必须创建一个引用变量:

udtCandidate& firstCand = uSeqs[i].Candidates.front();

像您一样使用&意味着地址运算符,这反过来将类型更改为指针。

于 2013-09-21T11:30:09.213 回答