2010-11-26 3 views
0

Я пытаюсь реализовать get() внутри файла заголовка C++:C++ :: GET и SET в файле заголовка

Например: это файл: test.hpp

class A { 
public: 
A(std::string f, int id):file(f), index(id){}; 

std::string getFile(){return file;}; 
int getIndex(){return id;}; 

private: 
    std::string file; 
    int index; 
}; 
} 

Но то возникает проблема:

Неопределенная ссылка на 'vtable A'.

Как я могу продолжить?

+1

Пожалуйста отправьте точный код, который вы используете. Вышеприведенный код (кроме резервной закрывающей скобки) должен работать, и он, конечно же, не даст вам ошибки, которые вы видите. – 2010-11-26 11:51:14

+3

Ну, за исключением того, что он возвращает _id_, когда его класс содержит член, называемый _index_. – Chowlett 2010-11-26 11:54:25

ответ

3
int getIndex(){return id;}; 

Там не член с именем 'ID', поэтому эта строка должна быть

int getIndex(){return index;}; 

Тогда у вас есть closen бандажа слишком много. Также обратите внимание, что после фигурных скобок нет необходимости в запятой. Кроме того, члены класса, которые не изменяют объект, всегда должны быть объявлены как const, он чрезвычайно помогает в обеспечении последовательной концепции того, что должно делать изменения и что не должно.

Вот как это будет выглядеть в конце концов:

#include <string> 

class A { 
public: 
A(std::string f, int id):file(f), index(id){} 

std::string getFile() const {return file;} 
int getIndex() const {return index;} 

private: 
    std::string file; 
    int index; 
};