我的 C++ 代码中的结构存在强制转换问题。我使用 C 风格的铸造。但是,如果我尝试使用替代名称(使用创建typedef
)进行转换,则会出现错误。请看我的代码。
class T
{
public:
typedef struct kIdS* kIdN;
typedef struct kIdS {
int* a;
double* b;
} kIdR;
typedef struct tIdS {
int* a;
double* b;
float* c;
} tIdR;
int a;
double b;
float c;
void F()
{
a = 0;
b = 0;
c = 0;
struct kIdS A = {&a, &b};
struct tIdS B = {&a, &b, &c};
struct kIdS* knv[] = {&A, (struct kIdS*)&B};
struct kIdS* knv1[] = {&A, (kIdN)&B}; //error
}
};
错误是:
error C2440: 'initializing' : cannot convert from 'T::kIdN' to 'T::kIdS *'
Types pointed to are unrelated; conversion requires reinterpret_cast,
C-style cast or function-style cast
为什么我不能使用替代名称?我如何使用创建的替代名称来解决这个问题typedef
?