我的 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
创建的替代名称来解决这个问题?
最佳答案
为什么不使用继承?
struct tIdS : public kIdS { ... }
关于c++ - 转换为使用 typedef 创建的结构类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13107313/