私はこれに取り組んできましたが、これは正しく動作しないようです。私はポインタリストの最後の値を返していますが、それを印刷したいのですが、非常に乱数を印刷しています。私はこれがポインタのメモリアドレスであると仮定しますが、逆参照すると、私の出力は同じことをします。intポインタの値を出力する
マイPointerlistは次のように、ポインタのリストである:
int* end() { return (pointerList.back()); }
アン私はそれを呼び出していますどのように、これは次のとおりです。たとえばlist<int*> pointerList
、これは戻って私の方法があります。
int* totry = ca.end();
cout << *totry;
これは値ではなくメモリアドレスを印刷しています。誰もがどのようにこれを解決するためのアイデアを持っていますか?
ありがとうございます!
EDIT:ここ はint型のポインタが指しているものです。 私は、このような[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]
などの値のリストを持っていると私は次のようにそのリストのさまざまな部分を指すポインタのリストがあります:
int* end() { return (pointerList.back()); }
を、そして私の.cppファイルでのコール:
[0,4,8,12]
私は、コードを持って
int型* totry = ca.end(); cout < < * totry;
これは私が機能を「追加」内部の私のリストのポインタを記入し、私はこのようにそれを行う私のpointerlist
class ptrList
{
public:
std::list<value_type> listOfValues;
std::list<*int> pointerlist;
を宣言する方法です:
int lstsqrt = 4;
for (int a = 1; a < lstsqrt; a++)
{
int endptr = a + (int)lstsqrt;
pointerlist.push_back((&*listOfValues.begin() + endptr)); //((lstsqrt - 1) + a) );
}
そして、これがありますmy end()メソッド
int* end() {return (pointerlist.back());}
これは私のtoTry変数に渡されます。
pointerlist.push_back((&*listOfValues.begin() + endptr));
あなたlistOfValues
がstd::list
であるため、その値は、メモリの連続ブロックに格納されていません。
リスト内の「int *」は何を指していますか?コードをもっと見せてください。 –
この質問に対する答えをどうやって知ることができますか? –
@Greg Hewgill申し訳ありません、intポインタが指しているものを表示するコードをいくつか追加しました – SSS