このようなことをしたのはこれが初めてなので、これをどのように行う必要があるのか 少しわかりません。いくつかの単純な値といくつかのゲッターを含む非常に単純なクラスがあります。
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 という 2 番目のクラスのメソッドが整数 (たとえば 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 を読みましたが、まだ正しい答えが少しわかりません。
ありがとう、ベン。