静态成员函数中的静态类成员变量未定义引用。

11
我实际上正在尝试在我的内存管理器中实现分页模拟,我试过创建一个静态页面表,但当我尝试打印它时出现引用错误。

我实际上正在尝试在我的内存管理器中实现分页模拟,我尝试创建一个静态页面表,但在尝试打印它时出现了引用错误。

#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

长时间以来一直遇到这个错误,请帮忙解决。

1个回答

22

你只需声明pageTable成员变量,还需要将其定义。这可以通过在实现(源)文件中基本重复声明来完成:

int ** MemoryManager::pageTable;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接