这是我第一次做这样的事情,所以我有点不确定我需要怎么做。我有一个非常简单的类,其中包含一些简单的值和一些 getter:
class Nucleotide{
private:
char Base;
int Position;
int Polymorphic;
public:
Nucleotide(char ch, int pos);
int getPos();
char getBase();
int getPoly();
};
此类存在于另一个包含它们向量的类中:
class NucleotideSequence{
private:
std::string Name;
std::vector<Nucleotide> Sequence;
public:
NucleotideSequence(std::string name, std::vector<Nucleotide> seq);
std::string getName();
Nucleotide getBase(int pos1);
};
我希望名为 getBase 的第二个类的方法能够接受一个整数——比如 1,并返回向量中的第一个 Nucleotide 对象。我写的内容如下:
Nucleotide NucleotideSequence::getBase(int pos1)
{
for(std::vector<Nucleotide>::iterator i = Sequence.begin(); i != Sequence.end(); i++)
{
if(pos1 == (*i).getPos())
{
return i; // Return a pointer to the correct base.
}
}
}
我已经将 Nucleotide 作为返回类型,但我真的想知道我应该如何更改它 - 因为如果我因为按值传递而返回 核苷酸,它是否不仅会在向量中的那个位置返回对象的副本?所以我宁愿返回一个指针/引用。我在循环中使用了一个迭代器,所以我应该只返回一个带有迭代器值的指针吗?我该怎么做呢?在函数中我返回 i 但我应该返回 i& 吗?我不确定具体细节 - 大概如果我返回一个指针,我的返回类型需要是 Nucleotide* 或者 Nucleotide& 因为 & 表示地址?我已经考虑过了并阅读了 Cpp tuts,但我仍然有点不确定正确的答案。
谢谢,本。