怎么說呢, 這是一個作用域的問題!
成員函數的作用域是類域, 而在類體外加上static不是表示靜態函數,表示的是函數擁有文件域(file scope)
而類域是小于文件域,強行把類域擴大到文件域,就會出錯。
如下代碼:
class CA {
public:
static void display(void);
};
static void CA::display(void) { // ERROR!
cout < < "Hello CA!" < < endl;
}
int main(int argc, char* argv[]) {
CA::display();
}
// error C2724: 'CA::display' : 'static' should not be used on member functions defined at file scope