2015-03-11 2 views
0

Noobie программист, изучающий C++ в первый раз. Ниже приведен выписанный код из Teach Yourself C++ 3rd Edition. Я умираю, помогу мне, я изучаю классы, но я не могу заставить этот код компилироваться на визуальной студии или на Code :: Blocks. :(Неразрешенный внешний символ "public: int myclass :: get_a (void)" Как устранить этот код? Noobie Q

//#include "stdafx.h" 
#include <iostream> 
//I understand this. Headers, etc. 
using namespace std; 
//and this, name traffic management system 
class myclass { 
    //private to myclass 
    int a; 
public: 
    void set_a(int num); 
    int get_a(); 
}; 
/*I understand int a is private/inaccessible from the rest of the code 
and void set_a(int num) is the dummy function.*/ 
void myclass::set_a(int num) 
//not sure what this is 
{ 
    a = num; 
} 
/*self explanatory*/ 
int _tmain(int argc, _TCHAR* argv[]) 
{ 
    myclass ob1, ob2; 

    ob1.set_a(10); 
    ob2.set_a(99); 

    cout << ob1.get_a() << "\n"; 
    cout << ob2.get_a() << "\n"; 

    return -5; 
} 
/*This is just supposed to output the number 10 and 99 right?? So why isn't it?*/ 

В Visual Studio полное описание ошибки: Ошибка 1 ошибка LNK2019: неразрешенный внешний символ "общественности: INT __thiscall MyClass :: get_a (аннулируются)" (? Get_a @ MyClass @@ QAEHXZ) ссылка в функции _wmain c: \ Users \ bernardo pliego \ documents \ visual studio 2013 \ Projects \ Chapter 1.5 \ Chapter 1.5 \ Chapter 1.5.obj Глава 1.5

О коде :: Блоки я получаю следующую ошибку: В функции ' main ': undefined ссылка на' my_class :: get_a() '

Мне очень нужна помогите, может кто-нибудь объяснить это мне?

ответ

2

Поскольку вы не определяете get_a, вы только объявляете об этом. Добавьте определение, как это:

int myclass::get_a() { return a; } 

Или просто определить его рядный:

class myclass { 
    //private to myclass 
    int a; 
public: 
    void set_a(int num); 
    int get_a() { return a }; 
}; 
0

Вы никогда не определитьint get_a(); так что вы получите ошибку в время компоновки.

Включите это чуть выше (а высокомерный) /*self explanatory*/ комментария

int myclass::get_a() 
{ 
    return a; 
}