这很好用:
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;
};
答案 0 :(得分:1)
要存储引用而不是值,您必须创建引用变量:
udtCandidate& firstCand = uSeqs[i].Candidates.front();
正如你所做的那样使用&
表示地址运算符,它又将类型更改为指针。