Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
0 / 0 / 1
Регистрация: 21.11.2015
Сообщений: 217

Как объявить статический метод класса?

10.03.2016, 19:24. Показов 1598. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
выдает ошибку на 11 16 19 строку(((((((

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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#include <iostream>
using namespace std;
class Sop
{
private:
short int kol;
short int kol2;
char *arr;
char *arr2;
static char *arr3;
short int kol3;
public:
void pol();
void vvod();
void vivod();
static int &kol3; 
static char meth();
};
Sop::static meth()
{
return Sop::&kol2;
}
 
void Sop::pol()
{
cout<<"Vvedite razmer massiva: ";
cin>>kol;
arr = new char[kol];
arr2 = new char[kol2];
arr3 = new char[kol3++];
return;
}
 
void Sop::vvod()
{
cout<<"Vvedite dannie: \n";
for(int i = 0; i < kol; i++)
{
  cout <<"A["<<i+1<<"] = ";
  cin >> arr[i];
}
}
void Sop::vivod()
{       
cout << "Massiv: \n";
for(int i = 0; i < kol; i++)   
  cout <<"A["<<i+1<<"] = "<<arr[i]<<";\n";
}
int main()
{
Sop a;
  a.pol();
  a.vvod();
   void (Sop::*fp)();
   fp = &Sop::vvod;
   
   (a.*fp)();
   a.meth();
   
  
 
return 0;
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
10.03.2016, 19:24
Ответы с готовыми решениями:

Как правильно объявить статический метод
например class A { private: static void method(); // объявление }; // как правильно объявить реализацию?

Почему нельзя объявить в описание класса статический double?
Ближе к делу :) class SuperClass { public: SuperClass() {} static const int A = 0; static const double B = 0; //ERROR*...

Как передать нестатическое поле в статический метод класса?
есть статическая фукция static LRESULT CALLBACK WndProc ( HWND,UINT,WPARAM,LPARAM); в ней нужно использоавть поля класса, вопрос -...

11
BrainOverflow
 Аватар для sab1ch
126 / 130 / 64
Регистрация: 31.03.2013
Сообщений: 556
10.03.2016, 19:29
Светлана Слонь,
C++
1
static short int kol2;
0
0 / 0 / 1
Регистрация: 21.11.2015
Сообщений: 217
10.03.2016, 19:34  [ТС]
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#include <iostream>
using namespace std;
class Sop
{
private:
short int kol;
short int kol2;
char *arr;
char *arr2;
static char *arr3;\\Статическое поле такого же типа(char);
short int kol3;\\для статического поля
public:
void pol();
void vvod();
void vivod();
static int &kol3; \\для взятия адреса
static char meth();\\функция для взятия адреса
};
Sop::static meth()\\взятие адреса
{
return Sop::&kol2;
}
 
void Sop::pol()
{
cout<<"Vvedite razmer massiva: ";
cin>>kol;
arr = new char[kol];
arr2 = new char[kol2];
arr3 = new char[kol3++];\\увеличение памяти статического массива на 1
return;
}
 
void Sop::vvod()
{
cout<<"Vvedite dannie: \n";
for(int i = 0; i < kol; i++)
{
  cout <<"A["<<i+1<<"] = ";
  cin >> arr[i];
}
}
void Sop::vivod()
{       
cout << "Massiv: \n";
for(int i = 0; i < kol; i++)   
  cout <<"A["<<i+1<<"] = "<<arr[i]<<";\n";
}
int main()
{
Sop a;
  a.pol();
  a.vvod();
   void (Sop::*fp)();\\ указатель на функцию класса
   fp = &Sop::vvod;
   
   (a.*fp)();
   a.meth();
   
  
 
return 0;
}
Добавлено через 38 секунд
но нам же надо для статического поля
0
BrainOverflow
 Аватар для sab1ch
126 / 130 / 64
Регистрация: 31.03.2013
Сообщений: 556
10.03.2016, 19:35
Что это?
Цитата Сообщение от Светлана Слонь Посмотреть сообщение
Sop::static meth()
{
return Sop::&kol2;
}
C++
1
2
3
4
char Sop::meth()
    {
        return kol2;
    }
Кликните здесь для просмотра всего текста
пишу только то, из-за чего программа не компилируется, а зачем вы возвращаете тип short int при указанном типе возвращаемого значения char и т.д. не хочу спрашивать.
0
0 / 0 / 1
Регистрация: 21.11.2015
Сообщений: 217
10.03.2016, 19:45  [ТС]
вот задание
1. На основе класса, созданного в работе №1, разработать класс, содержащий дополнительно к имеющимся полей и функций:
- Поле, имеет такой же тип, как массив в таблице 1;
- Статическое поле такого же типа;
- Статическое функцию, которая возвращает по ссылке значение статического поля.
2. Изменить созданную в работе №1 функцию выделения памяти для массива так, чтобы в ней, кроме имеющихся действий, происходило увеличение на единицу значение статического поля.
3. Определить указатель на поля класса (для любого типа полей) и указатель на функции класса, имеют тип значения void и пустой список аргументов.

Добавлено через 5 минут
Цитата Сообщение от Sabnik18 Посмотреть сообщение
C++
1
static short int kol2;
но почему kol2? и без & ?

Добавлено через 31 секунду
там же адрес надо присвоить

Добавлено через 2 минуты
учитель говорил что взятие адреса правильно
C++
1
2
3
4
Sop::static meth()
{
return Sop::&kol2;
}
0
BrainOverflow
 Аватар для sab1ch
126 / 130 / 64
Регистрация: 31.03.2013
Сообщений: 556
10.03.2016, 19:46
Светлана Слонь, если хотите вернуть ссылку, тогда так:
C++
1
2
3
4
5
6
7
//....
static short int kol2;
//....
short int& Sop::meth()
{
    return kol2;
}
0
0 / 0 / 1
Регистрация: 21.11.2015
Сообщений: 217
10.03.2016, 19:48  [ТС]
а почему kol2???
нам же надо kol2 для arr2;

Добавлено через 34 секунды
а статическая kol3...
0
BrainOverflow
 Аватар для sab1ch
126 / 130 / 64
Регистрация: 31.03.2013
Сообщений: 556
10.03.2016, 19:48
Цитата Сообщение от Светлана Слонь Посмотреть сообщение
учитель говорил что взятие адреса правильно
во-первых, в область видимости Sop входит meth() и т.к. вы указали прототип с возвращаемым значением char, то нужно еще и тип указать, поэтому это вообще бред:
C++
1
2
3
4
Sop::static meth()
{
return Sop::&kol2;
}
Далее. У вас тип возвращаемого значения в прототипе char, но возвращает short int. Такое конечно возможно, но для чего?
0
19497 / 10102 / 2461
Регистрация: 30.01.2014
Сообщений: 17,808
10.03.2016, 19:49
Цитата Сообщение от Светлана Слонь Посмотреть сообщение
а почему kol2???
Смотрите на принцип, а не на имена переменных. Имена переменных, понимая принцип, сами сможете выбрать какие хотите.
0
0 / 0 / 1
Регистрация: 21.11.2015
Сообщений: 217
10.03.2016, 19:54  [ТС]
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
using namespace std;
class Sop
{
private:
short int kol;
short int kol2;
char *arr;
char *arr2;
static char *arr3;
static short int kol3;
public:
void pol();
void vvod();
void vivod();
static char meth();
};
 char Sop:: meth()
{
return kol3;
}
Добавлено через 21 секунду
тогда так?

Добавлено через 37 секунд
ой....

Добавлено через 1 минуту
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
using namespace std;
class Sop
{
private:
short int kol;
short int kol2;
char *arr;
char *arr2;
static char *arr3;
static short int kol3;
public:
void pol();
void vvod();
void vivod();
static char meth();
};
short int& Sop::meth()
{
    return kol3;
}
0
BrainOverflow
 Аватар для sab1ch
126 / 130 / 64
Регистрация: 31.03.2013
Сообщений: 556
10.03.2016, 19:55
Светлана Слонь, вы до этого возвращали kol2, теперь kol3. ????
Цитата Сообщение от Светлана Слонь Посмотреть сообщение
C++
1
2
3
4
5
6
7
//.....
static char meth();
};
short int& Sop::meth()
{
    return kol3;
}
Вы сами то видите, что у вас прототип возвращает char??????????
0
0 / 0 / 1
Регистрация: 21.11.2015
Сообщений: 217
10.03.2016, 20:24  [ТС]
но выдает ошибку на 16 и 18 строке(

Добавлено через 1 минуту
но ведь kol3 принадлежит статическому массиву

Добавлено через 1 минуту
в задании так же - Статическую функцию, которая возвращает по ссылке значение статического поля.

Добавлено через 1 минуту
kol2 принадлежит arr2

Добавлено через 2 минуты
тогда
C++
1
static int meth();
Добавлено через 5 минут
все равно выдает ошибку на 16 и 18 строке((((((((((((((((((((((((((

Добавлено через 16 минут
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.03.2016, 20:24
Помогаю со студенческими работами здесь

Как объявить другом конкретный метод другого класса?
Как в одном классе объявить другом метод другого класса?

Статический элемент и метод класса
Доброго времени суток, разбираюсь со статическим элементом и методом класса. накидал небольшую програмку, но Visual Studio 2010 ее не...

CreateThread: возможно ли запустить не статический метод класса?
Возможно ли в CreateThread запустить не static процедуру класса? clas_s obj; HANDLE h = CreateThread(0, 0,...

Полиморфизм. Как в предке объявить статический массив, который можно будет использовать в наследниках?
Всем привет. Мне необходимо в классе предке объявить статический массив который можно будет использовать в наследниках. Не очень хочется...

Как передать в метод класса Menu указатель на метод дочернего класса?
Как передать в метод базового класса указатель на метод дочернего: class Menu() { protected: setCallback(*********); //...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 31.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru