나는이 작업을 해왔고 제대로 작동하지 않는 것 같습니다. 포인터 목록의 마지막 값을 반환하고 인쇄하고 싶지만 매우 난수가 인쇄됩니다. 나는 이것이 포인터의 메모리 주소라고 가정하지만, 역 참조 할 때, 내 출력은 여전히 똑같은 일을한다.int 포인터의 값을 프린트
내 Pointerlist 같이, 포인터의 목록입니다
int* end() { return (pointerList.back()); }
하는 I는 그것을 호출 오전 방법이있다 : 예를 들어 list<int*> pointerList
,이 반환 나의 방법이다.
이 값은 메모리 주소가 아닌 값입니다. 아무도 아이디어를 어떻게 해결할 수 있습니까?
미리 감사드립니다.
편집 : [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]
같은 값의 목록을 그리고 나는 다음과 같은이 목록의 다른 부분을 가리키는 포인터의 목록이 있습니다 : 여기 은 무엇 INT 포인터가 가리키는입니다
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) );
}
을 그리고 이것이 내 end() 메소드
int* end() {return (pointerlist.back());}
그러면이 값이 내 toTry 변수로 전달됩니다.
pointerlist.push_back((&*listOfValues.begin() + endptr));
귀하의 listOfValues
가 std::list
, 따라서 그 값이 메모리의 연속 된 블록에 저장되지 않습니다
목록의 'int *'는 (으)로 무엇입니까? 더 많은 코드를 보여주십시오. –
이 질문에 대한 답변을 어떻게 알 수 있습니까? –
@Greg Hewgill 죄송합니다. int 포인터가 가리키는 포인터를 보여주는 코드를 추가했습니다. – SSS