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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
vladimir_Ronny
1 / 1 / 1
Регистрация: 13.06.2015
Сообщений: 78
#1

Использование статический данных в классах - C++

29.06.2015, 12:26. Просмотров 217. Ответов 10
Метки нет (Все метки)

Добрый день!

Помогите, пожалуйста! Есть задача: создать в классе статическое поле - годовой процент. И присвоить этому полю какое-либо значение.

Вот мой код:

C++ (Qt)
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
#include <stdio.h>
#include "stdafx.h"
#include <iostream>
using namespace std;
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#include <math.h>
 
class Depo
{public:
    float Sum; 
    int day; 
    int month;
    int year;
    static float Per;
    
        Depo()
    {
        Sum=10000;
        day=15;
        month=10;
        year=2015;
        float Depo::Per = 0.11;     
        }
 
    void set_Depo()
    {
        cout << Sum << " " << day << "." << month << "." << year << endl;
    cout << Per << endl;
        };
    };
 
int main()
{
    Depo obj1;
    obj1.set_Depo();
return 0;
}
Программа ругается и пишет:
1>c:\c++\lesson 1\lesson 1\lesson 1.cpp(24): error C2655: Depo::Per: недопустимое определение или повторное объявление в текущей области видимости
1> c:\c++\lesson 1\lesson 1\lesson 1.cpp(16): см. объявление "Depo::Per"
1>c:\c++\lesson 1\lesson 1\lesson 1.cpp(24): error C2086: float Depo::Per: переопределение
1> c:\c++\lesson 1\lesson 1\lesson 1.cpp(16): см. объявление "Per"

Я перерыл кучу страниц в интернете, но решения вопроса не нашел.
Помогите, пожалуйста!

Заранее благодарю!
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.06.2015, 12:26     Использование статический данных в классах
Посмотрите здесь:

C++ Использование char* в классах
Маccив->Статический вызов -> и его использование C++
C++ Преобразование типов данных в классах
Сделать статический массив с разными типами данных C++
C++ Реализация сравнения данных в массиве в классах
C++ Использование файлового типа данных
C++ Использование полей и методов в дочерних классах
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ящюр
96 / 96 / 24
Регистрация: 15.03.2013
Сообщений: 515
Записей в блоге: 1
29.06.2015, 12:46     Использование статический данных в классах #2
24 строка
C++
1
Depo::Per = 0.11;
Добавлено через 49 секунд
Но там потом другая ошибка выплывет =)
vladimir_Ronny
1 / 1 / 1
Регистрация: 13.06.2015
Сообщений: 78
29.06.2015, 12:51  [ТС]     Использование статический данных в классах #3
Цитата Сообщение от ящюр Посмотреть сообщение
Но там потом другая ошибка выплывет =)
Когда я искал ответ на свой вопрос в интернете, то там предлагалось такое решение. Но программа всё равно не работает.
Да, Вы всё верно сказали - выплывает другая ошибка.

1>Lesson 1.obj : error LNK2001: неразрешенный внешний символ ""public: static float Depo::Per" (?Per@Depo@@2MA)"
1>C:\C++\Lesson 1\Debug\Lesson 1.exe : fatal error LNK1120: 1 неразрешенных внешних элементов
1>
1>СБОЙ построения.

Помогите, пожалуйста, с ней справиться =)
ящюр
96 / 96 / 24
Регистрация: 15.03.2013
Сообщений: 515
Записей в блоге: 1
29.06.2015, 12:52     Использование статический данных в классах #4
Обязательно переменную static то объявлять?
SherHun
29 / 29 / 15
Регистрация: 22.06.2015
Сообщений: 102
29.06.2015, 12:57     Использование статический данных в классах #5
C++
1
2
3
4
5
6
7
class Some
{
public:
    static int stValue;
};
 
int Some::stValue = 1;

vladimir_Ronny, инициализацию
C++
1
 float Depo::Per = 0.11;
за приделы класса вынесите.
ящюр
96 / 96 / 24
Регистрация: 15.03.2013
Сообщений: 515
Записей в блоге: 1
29.06.2015, 12:58     Использование статический данных в классах #6
за приделы класса вынесите.
А в конструкторе по умолчанию нельзя использовать статик переменную?
SherHun
29 / 29 / 15
Регистрация: 22.06.2015
Сообщений: 102
29.06.2015, 13:01     Использование статический данных в классах #7
Можно, но уже потом, дополнительно.

Добавлено через 1 минуту
В с++11 должно и такое прокатывать
C++
1
2
3
4
5
class Some
{
 
    static int stValue = 1;
};
vladimir_Ronny
1 / 1 / 1
Регистрация: 13.06.2015
Сообщений: 78
29.06.2015, 13:15  [ТС]     Использование статический данных в классах #8
Цитата Сообщение от ящюр Посмотреть сообщение
Обязательно переменную static то объявлять?
Да, это условие задачи =((

Добавлено через 45 секунд
Цитата Сообщение от SherHun Посмотреть сообщение
В с++11 должно и такое прокатывать
Не прокатывает =((

Добавлено через 1 минуту
Цитата Сообщение от SherHun Посмотреть сообщение
vladimir_Ronny, инициализацию
Код C++Выделить код
1
*float Depo::Per = 0.11;
за приделы класса вынесите.
Вынес. Всё равно не работает =((

C++ (Qt)
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
#include <stdio.h>
#include "stdafx.h"
#include <iostream>
using namespace std;
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#include <math.h>
 
class Depo
{public:
    float Sum; 
    int day; 
    int month;
    int year;
    static float Per;
    
        Depo()
    {
        Sum=10000;
        day=15;
        month=10;
        year=2015;
        }
 
    void set_Depo()
    {
        cout << Sum << " " << day << "." << month << "." << year << endl;
    cout << Per << endl;
        };
    };
 
int main()
{Depo::Per = 0.11;
    Depo obj1;
    obj1.set_Depo();
return 0;
}
SherHun
29 / 29 / 15
Регистрация: 22.06.2015
Сообщений: 102
29.06.2015, 13:29     Использование статический данных в классах #9
Сообщение было отмечено автором темы, экспертом или модератором как ответ
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
class Depo
{
public:
    float Sum;
    int day;
    int month;
    int year;
    static float Per;
 
    Depo()
    {
        Sum = 10000;
        day = 15;
        month = 10;
        year = 2015;
 
    }
 
    void set_Depo()
    {
        cout << Sum << " " << day << "." << month << "." << year << endl;
        cout << Per << endl;
    };
};
 
float Depo::Per = 0.11;
 
int main()
{
    Depo obj1;
    obj1.set_Depo();
    return 0;
}
ящюр
96 / 96 / 24
Регистрация: 15.03.2013
Сообщений: 515
Записей в блоге: 1
29.06.2015, 13:33     Использование статический данных в классах #10
Какой вообще тогда смысл от статической переменной . Если ее можно определить только вне метода. Проще сразу объявить константу.... хотя если только класс не самописный может и имеет смысл =)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.06.2015, 14:21     Использование статический данных в классах
Еще ссылки по теме:

Структуры данных. Написать программу, позволяющую определить, есть ли в школе в каких-либо классах однофамильцы C++
C++ Структура данных - статический вектор
C++ Поведение Приватных данных в классах
Нюансы использования динамических массивов в качестве данных-членов в классах C++
C++ Использование структур данных

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
vladimir_Ronny
1 / 1 / 1
Регистрация: 13.06.2015
Сообщений: 78
29.06.2015, 14:21  [ТС]     Использование статический данных в классах #11
Цитата Сообщение от SherHun Посмотреть сообщение
};
float Depo::Per = 0.11;
int main()
Работает! Спасибо!!!
Yandex
Объявления
29.06.2015, 14:21     Использование статический данных в классах
Ответ Создать тему
Опции темы

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