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
ですか?