2015-05-25 2 views
0

Я пытаюсь создать класс с массивом с размером, который определяется во время выполнения. Однако, когда я пытаюсь получить доступ к массиву в функции «addToSet», я получаю «необъявленную ошибку идентификатора». Любая помощь будет оценена по достоинству. Я новичок в C++.Ошибка с динамическим массивом

Заголовочный файл:

class ShortestPathSet 
{ 
private: 
    //Variables 
    int *pathSet; 

public: 
    //Variables 

    int size; 


    //Constructor 
    ShortestPathSet(int numVertices); 

    //Functions 
    void addToSet(int vertice, int distance); 

}; 

Класс файла:

#include "ShortestPathSet.h" 

using namespace std; 

ShortestPathSet::ShortestPathSet(int numVertices) 
{ 
    size = numVertices; 
    pathSet = new int[numVertices]; 
} 

void addToSet(int vertice, int distance) 
{ 
    pathSet[vertice] = distance; 
} 

ответ

2

Вы упускаете имя класса здесь:

void addToSet(int vertice, int distance) 

Вы имели в виду:

void ShortestPathSet::addToSet(int vertice, int distance) 
    ^^^^^^^^^^^^^^^^^ 

As-is, вы объявляете и определяете полностью несвязанную функцию, и в рамках этой функции нет такой переменной pathSet - следовательно, необъявленный идентификатор.

Боковая заметка, вы, вероятно, не хотите, чтобы size являлась общедоступной переменной-членом.

+0

Итак, даже при использовании «namespace std» мне все равно нужно включить это? Кроме того, большое вам спасибо! –

+0

@KarlTaht Это не имеет никакого отношения к 'namespace std'. Чтобы определить функцию члена класса вне определения класса, вам необходимо присвоить его классу с именем класса. – Barry

+0

Должен ли я использовать заголовочный файл для класса, чтобы упростить его? –

Смежные вопросы