1 / 1 / 1
Регистрация: 13.06.2015
Сообщений: 78
1

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

29.06.2015, 12:26. Показов 1906. Ответов 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"

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

Заранее благодарю!
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.06.2015, 12:26
Ответы с готовыми решениями:

Использование оператора '::' в классах
Доброго времени суток! Знаю, что в классах как-то используется оператор (::), но в книге, где...

Использование char* в классах
Всем доброе время суток! В общем пытаюсь создать простейший класс с использованием char* для...

Использование переменных в других классах
public class povremennaya : Form1 { public double stavka1; ...

Использование Context в других классах
У меня есть диалоговое окно, в котором я использую список. Требуется считать этот список с...

10
114 / 112 / 62
Регистрация: 15.03.2013
Сообщений: 561
Записей в блоге: 5
29.06.2015, 12:46 2
24 строка
C++
1
Depo::Per = 0.11;
Добавлено через 49 секунд
Но там потом другая ошибка выплывет =)
0
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>СБОЙ построения.

Помогите, пожалуйста, с ней справиться =)
0
114 / 112 / 62
Регистрация: 15.03.2013
Сообщений: 561
Записей в блоге: 5
29.06.2015, 12:52 4
Обязательно переменную static то объявлять?
0
31 / 31 / 22
Регистрация: 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;
за приделы класса вынесите.
0
114 / 112 / 62
Регистрация: 15.03.2013
Сообщений: 561
Записей в блоге: 5
29.06.2015, 12:58 6
за приделы класса вынесите.
А в конструкторе по умолчанию нельзя использовать статик переменную?
0
31 / 31 / 22
Регистрация: 22.06.2015
Сообщений: 102
29.06.2015, 13:01 7
Можно, но уже потом, дополнительно.

Добавлено через 1 минуту
В с++11 должно и такое прокатывать
C++
1
2
3
4
5
class Some
{
 
    static int stValue = 1;
};
0
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;
}
0
31 / 31 / 22
Регистрация: 22.06.2015
Сообщений: 102
29.06.2015, 13:29 9
Лучший ответ Сообщение было отмечено vladimir_Ronny как решение

Решение

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;
}
1
114 / 112 / 62
Регистрация: 15.03.2013
Сообщений: 561
Записей в блоге: 5
29.06.2015, 13:33 10
Какой вообще тогда смысл от статической переменной . Если ее можно определить только вне метода. Проще сразу объявить константу.... хотя если только класс не самописный может и имеет смысл =)
0
1 / 1 / 1
Регистрация: 13.06.2015
Сообщений: 78
29.06.2015, 14:21  [ТС] 11
Цитата Сообщение от SherHun Посмотреть сообщение
};
float Depo::Per = 0.11;
int main()
Работает! Спасибо!!!
0
29.06.2015, 14:21
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.06.2015, 14:21
Помогаю со студенческими работами здесь

Использование SoftwareSerial с сторонних классах
Всем привет. Для одного проекта написал обширный класс по обработке данных принимаемых arduino....

Использование обобщенного типа в классах и интерфейсах
Подчеркивает L&lt;T&gt; и выбивает &quot;Объявление параметра типа должно быть идентификатором, а не типом&quot;...

Многократное использование массива в разных классах
Задача: сгенерировать массив из случайных чисел и использовать его для сортировки различными...

Использование компонентов формы в своих классах
Написал класс class myclass { public: void SetText(AnsiString text); }; void...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru