포인터를 배우려고하는데이 오류가 발생합니다. 요청 헤더 파일 클래스를 변경해야합니까? 왜 내가 그런 실수를하는거야? 유형 오류 및 포인터 혼동
cannot convert `req' from type `Request' to type `Request *'
이 오류는 논문 라인에서 어떤 일이 일어나고 :
는
//Store necessary information in a Request object for each request.
Request req(url, request, 1);
Request *reqq = req; //req points to the object
list->Append(reqq);
코드 :
void
ClientThread(int request)
{
const int sz = 50;
char url[sz];
FILE *fp = fopen("url.txt", "r");
if (!fp)
printf(" Cannot open file url.txt!\n");
else {
int pos = 0;
char c = getc(fp);
while (c != EOF || pos == sz - 1) {
if (c == '\n') {
url[pos] = '\0';
serve(url);
pos = 0;
//Store necessary information in a Request object for each request.
Request req(url, request, 1);
Request *reqq = req; //req points to the object
list->Append(reqq);
}
else {
url[pos++] = c;
}
c = getc(fp);
}
fclose(fp);
}
}
내 request.h 파일은 다음과 같습니다
class Request
{
public:
//constructor intializes request type
Request(char *u, int rqtID, int rqtrID);
char *url;
int requestID;
int requesterID;
}
'req'는'Request'입니다. 'reqq'는'Request'에 대한 포인터입니다. 하나에서 다른 하나로의 변환은 없습니다. – juanchopanza
주소 연산자'&'는 객체를 포인터로 변환하는 데 사용됩니다 : '& req'. –
@MarkRansom :'&'연산자는 객체를 포인터로 변환하지 않습니다. 그것은 객체의 주소 인 포인터 값을 산출합니다. –