參考非靜態成員 'identifier' 是非法的
備註
可能的原因:
非靜態成員是在靜態成員函式中指定。 若要存取非靜態成員,您必須傳入或建立類別的本機執行個體,並使用成員存取運算子 (
.或->)。指定的識別項不是類別、結構或等位的成員。 請檢查識別項拼寫。
成員存取運算子是指非成員函式。
範例
- 下列範例會產生 C2597,並示範如何修正此問題:
// C2597.cpp
// compile with: /c
struct s1 {
static void func();
static void func2(s1&);
int i;
};
void s1::func() {
i = 1; // C2597 - static function can't access non-static data member
}
// OK - fix by passing an instance of s1
void s1::func2(s1& a) {
a.i = 1;
}