2013-01-06 91 views
11

我实际上是试图在我的内存管理器中实现Paging的模拟,我尝试创建一个静态页表,但它给我参考错误,当我尝试打印它。未定义的引用静态成员函数里面的静态类成员变量

#ifndef MEMORYMANAGER_H 
#define MEMORYMANAGER_H 
#include "memory.h" 

class MemoryManager 
{ 
    private: 
     PhysicalMemory RAM; 
     LogicalMemory VM; 
     int offsetValue; 
     static int ** pageTable; 
    public: 
     MemoryManager(); 
     bool addProcess(TimeSliceRequest); 
     void printVirtualMemory(); 
     /* 
     * Page Table Initialization 
     **/ 
     static void initializePageTable(){ 
      pageTable = new int * [pageSize]; 
      for (int i=0; i<pageSize; i++) { 
       pageTable[i] = new int [2]; 
      } 
     } 
     static int getPageTabe(int x, int y) { 
      return MemoryManager::pageTable[x][y]; // undefined reference to `MemoryManager::pageTable' 
     } 
     static void printPageTable(){ 
      for(int i=0; i<pageSize; i++){ 
       for(int j=0; j<2; j++) { 
        cout << getPageTabe(i,j); 
       } 
       cout << endl; 
      } 
     } 
}; 


#endif // MEMORYMANAGER_H 

充分利用了很久很久这个错误,请帮助

回答

22

你只声明pageTable成员变量,你必须定义它。这是通过基本上重复执行(源)文件中的声明来完成的:

int ** MemoryManager::pageTable; 
+2

明白了:) 问题解决 –