Ответ 1
Вы объявляете только переменную-член pageTable
, вы также должны определить ее. Это делается путем, в основном, повторения объявления в файле реализации (источника):
int ** MemoryManager::pageTable;
Я на самом деле пытаюсь реализовать симуляцию пейджинга, в моем диспетчере памяти я попытался создать статическую таблицу страниц, но она дала ссылочную ошибку, когда я пытаюсь ее распечатать.
#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
Получение этой ошибки из долгого долгого времени, пожалуйста, помогите
Вы объявляете только переменную-член pageTable
, вы также должны определить ее. Это делается путем, в основном, повторения объявления в файле реализации (источника):
int ** MemoryManager::pageTable;