【问题标题】:undefined reference to `Static Class Member variable inside Static member function'未定义对“静态成员函数内的静态类成员变量”的引用
【发布时间】:2012-12-20 14:48:30
【问题描述】:

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

#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

这个错误很久了,请帮忙

【问题讨论】:

    标签: c++ static static-methods static-members


    【解决方案1】:

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

    int ** MemoryManager::pageTable;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-17
      • 2021-07-10
      相关资源
      最近更新 更多