Форум программистов, компьютерный форум CyberForum.ru

error LNK1120: 1 неразрешенных внешних элементов - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 34, средняя оценка - 4.71
uway
0 / 0 / 0
Регистрация: 20.05.2010
Сообщений: 7
26.12.2011, 20:49     error LNK1120: 1 неразрешенных внешних элементов #1
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
/*Person.h*/
class Person {
 
        char Name[50];
        char FatherName[50];
        char SurName[50];
        int Byyyy;
        int Bmm;    
        int Bdd;    
             static int BaseSalary;
             float percentAdd;
            static void setBaseSalary(int BS=0);
            float Salary;
public:
        void init (const char surName[],const  char Name[], const char fatherName[]);
        
        void setName (const char Nm[]);         
        void setFatherName (const char Fnm[]);
        void setSurName (const char Snm[]); 
        char* getName ();
        char* getFatherName ();
        char* getSurName();
        void setBirthday (int dd, int mm, int yyyy);
        int getBdd();
        int getBmm();
        int getByyyy();             
    Person();
    Person(const char surname[],const char name[],const char fathername[],int bdd,int bmm, int byyyy,float percentadd);
    Person( const Person& person);
                    
    void personPrint();
            void setPercentAdd(float Pa);
            float getPercentAdd();
            float getSalary();
 
};
/*Person.cpp*/
...............
        void Person::setBaseSalary(int Bs)
    {
        BaseSalary=Bs;
    }
        float Person::getSalary()
    {
        return BaseSalary+BaseSalary*getPercentAdd()/100;
    }
...............

После добавления static int BaseSalary и его сэтера линкер начал ругаться:
1>person.obj : error LNK2001: неразрешенный внешний символ ""private: static int Person::BaseSalary" (?BaseSalary@Person@@0HA)"
1>C:\Users\Alexander\Desktop\C++\ООП\Lab5\Debug\la5.exe : fatal error LNK1120: 1 неразрешенных внешних элементов
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
igorrr37
 Аватар для igorrr37
1593 / 1221 / 118
Регистрация: 21.12.2010
Сообщений: 1,868
Записей в блоге: 7
26.12.2011, 21:04     error LNK1120: 1 неразрешенных внешних элементов #2
попробуй добавить в Person.cpp:
int Person::BaseSalary = 0;
uway
0 / 0 / 0
Регистрация: 20.05.2010
Сообщений: 7
26.12.2011, 21:07  [ТС]     error LNK1120: 1 неразрешенных внешних элементов #3
Цитата Сообщение от igorrr37 Посмотреть сообщение
попробуй добавить в Person.cpp:
int Person::BaseSalary = 0;
спасибо.

я так понял, в случае static это обязательно нужно делать, да?!
igorrr37
 Аватар для igorrr37
1593 / 1221 / 118
Регистрация: 21.12.2010
Сообщений: 1,868
Записей в блоге: 7
26.12.2011, 21:22     error LNK1120: 1 неразрешенных внешних элементов #4
Для инициализации нужно знать, где находится статическая переменная, этой информации нет в объявлении класса. Когда вы пишете int A::counter вы указываете место, где эта перменная будет создана и можете ее иницилизировать.
Yandex
Объявления
26.12.2011, 21:22     error LNK1120: 1 неразрешенных внешних элементов
Ответ Создать тему
Опции темы

Текущее время: 14:54. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru