我的結構在我的C++代碼中有鑄造問題。我使用C風格的鑄造。但是,如果我嘗試使用替代名稱(使用typedef
創建),我有一個錯誤。請看看我的代碼。 鑄造到用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
創建的替代名稱來解決此問題?
感謝您的回答。你對全球結構是正確的。解決方案是在typedef之前放置結構定義。現在編譯器知道struct是本地的。現在我知道,而不是結構X我們可以簡單地使用X.謝謝。 –