C ++对象引用而不是副本

时间:2013-09-21 11:26:34

标签: c++ windows object reference

这很好用:

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;
};

1 个答案:

答案 0 :(得分:1)

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

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

正如你所做的那样使用&表示地址运算符,它又将类型更改为指针。