클래스의 멤버함수에서 typeid에 따른 조건 분기 안 됩니다.
아래 소스코드는 특정 클래스의 멤버함수입니다.
AssociativeArr& set(int order, const char* a_key, int a_data) { innerPt[order].data=(T2)new char[1]; T1, T2에 따라 조건분기하려 했는데, T2가 int 일 때는 다음과 같은 컴파일 에러가 발생합니다. T2는 위 멤버함수에서 innerPt[order].data의 타입입니다. T2가 int이면 그 아래의 else if 문과는 상관 없을 것 같은데, 계속 else if 블록이 잘못됐다고 그러네요. 실행시 else if문은 실행이 안될텐데 말입니다. warning:NULL used in arithemetic
if(&typeid(innerPt[order].key)==&typeid(char*) || &typeid(innerPt[order].key)==&typeid(const char*)) {
innerPt[order].key=copyString(innerPt[order].key,a_key);
}
else {
cout<<"The type of key is not char*"<
}
if(&typeid(innerPt[order].data)==&typeid(int) || &typeid(innerPt[order].data)==&typeid(float) || &typeid(innerPt[order].data)==&typeid(double)) {
innerPt[order].data=(T2)a_data;
cout<
}
else if(&typeid(innerPt[order].data)==&typeid(char*) || &typeid(innerPt[order].data)==&typeid(const char*)){
if(innerPt[order].data!=NULL) {
delete[] innerPt[order].data;
}
cout<<"char"<
*(innerPt[order].data)=(char)a_data;
}
return innerPt[order];
}
error:type 'int' argument given to 'delete', expected pointer
error:invalid type argument of unary '*'
댓글 달기