Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.67/18: Рейтинг темы: голосов - 18, средняя оценка - 4.67
 Аватар для VLK
198 / 170 / 19
Регистрация: 05.05.2013
Сообщений: 1,236

Наследование класс1 *test = new класс2

31.07.2013, 21:47. Показов 4183. Ответов 54
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Кликните здесь для просмотра всего текста
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
64
65
#include <iostream> 
 
class BaseClass // Базовый класс
{
public:
BaseClass(): a(0), b(0) { std::cout << "BaseClass constructor.. \n"; }
BaseClass(int rhs_a, int rhs_b): a(rhs_a), b(rhs_b) { std::cout << "BaseClass constructor.. \n"; }
 
void print() const 
{
std::cout << "a: " << a << "\n";
std::cout << "b: " << a << "\n";
}
 
void printBaseClass() const 
{
std::cout << "a: " << a << "\n";
std::cout << "b: " << a << "\n";
}
 
protected:
int a;
int b;
};
 
 
class DerivedClass : public BaseClass // Производный класс от BaseClass
{
public:
DerivedClass(): x(0), y(0), z(0) { std::cout << "DerivedClass constructor.. \n"; }
DerivedClass(int rhs_x, int rhs_y, int rhs_z): x(rhs_x), y(rhs_y), z(rhs_z) { std::cout << "DerivedClass constructor.. \n"; }
 
void print() const 
{
std::cout << "x: " << x << "\n";
std::cout << "y: " << y << "\n";
std::cout << "z: " << z << "\n";
}
 
void printDerivedClass() const 
{
std::cout << "x: " << x << "\n";
std::cout << "y: " << y << "\n";
std::cout << "z: " << z << "\n";
}
 
protected:
int x;
int y;
int z;
};
 
 
int main()
{
setlocale(LC_ALL,"");
 
BaseClass * test = new DerivedClass;
test->print();
test->printBaseClass();
 
 
system("pause");
return 0;
}


Вот небольшая программка, подскажите в чем смысл записи в строчке 58, только не сухое определение записи, что мы создаем объект класса BaseClass и выделяем под него память типа DerivedClass (или как то так), а на пальцах, в чес смысл в чем плюсы и самое главное
чем данная строка отличалась бы от записи BaseClass * test = new BaseClass ?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
31.07.2013, 21:47
Ответы с готовыми решениями:

Задача на класс2
Помогите до реализовать форму программы Спасибо)

Nginx перенаправляет на http://site.ru/test.ru или http://test.ru/test.ru
Только, что поставил nginx + php-fpm по этой статье - http://dunmaksim.blogspot.ru/2013/12/nginx-php-fpm.html При попытке зайти на сайт...

C:\Projects\test\test.cpp|6|error: ISO C++ forbids declaration of 'operator++' with no type [-fpermissive]|
class TUID { public: char Data; TUID (); operator ++ (); };

54
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9006 / 4707 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
31.07.2013, 22:53
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от VLK Посмотреть сообщение
он заключается в том что один объект, в данном случае test, одновременно является объектом класса BaseClass и объектом класса DerivedClass?
Нет. Указателю на базовый можно присвоить и тот и тот, но работать будет именно тот объект на который он действительно указывает. То есть: чем проинициализировали то и будет.
0
 Аватар для VLK
198 / 170 / 19
Регистрация: 05.05.2013
Сообщений: 1,236
31.07.2013, 23:16  [ТС]
IGPIGP, Croessmah, Jupiter, блин, все равно не понимаю смысла этого virtual и этой записи ( BaseClass * test = new DerivedClass ), вот без них, просто наследование, я создаю 2 класса Базовый класс (BaseClass) и от него идет Производный класс (DerivedClass), я создаю объект класса DerivedClass, назовем его test и у меня есть доступ ко всем переменным обоих классов и ко всем методам обоих классов, зачем мне это извращение в виде BaseClass * test = new DerivedClass, которое закрывает доступ к методам одного из классов. В чем смысл?
Где ошибка?
0
Неэпический
 Аватар для Croessmah
18146 / 10730 / 2066
Регистрация: 27.09.2012
Сообщений: 27,029
Записей в блоге: 1
31.07.2013, 23:21
Цитата Сообщение от VLK Посмотреть сообщение
блин, все равно не понимаю смысла этого virtual и этой записи
Хоть я и против всякого видео-обучения, но видео лекция:

автор доходчиво объясняет (хоть некоторые моменты и не совсем верны)
1
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9006 / 4707 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
31.07.2013, 23:51
Цитата Сообщение от VLK Посмотреть сообщение
зачем мне это извращение в виде BaseClass * test = new DerivedClass, которое закрывает доступ к методам одного из классов. В чем смысл?
Вы же не читаете, что Вам говорят. И с книжками, видимо, та же история. Смотрите, Вам показали, что раскопать: полиморфное наследование. Реакция? Я показал мутный примерчик, где из без полиморфизма нужно использовать указатель на базовый. При передаче аргумента в функцию. Задача же не из простых ответить на вопрос: "Чего я должен захотеть, чтобы это пригодилось?" Пойдите за предложенным вариантом и постарайтесь вникнуть. Пусть у Вас есть массив или контейнер указателей на базовый и дочерние классы и Вы хотите пройти по общим полям (a и b) передавая указатели в функцию, тогда это можно сделать. И полиморфизм тут ни при чем. Хотя главное, это конечно возможность вызова виртуальных методов. То есть, именно при полиморфном наследовании, это обычный приём. Язык позволяет присвоить указателю на базовый, указатель на дочерний без явного приведения. Наоборот, - требуется dynamic_cast...
1
 Аватар для VLK
198 / 170 / 19
Регистрация: 05.05.2013
Сообщений: 1,236
01.08.2013, 13:49  [ТС]
Ой.. сколько было написано в этой теме.. а так толком это слово или словосочетание ни кто и не сказал, что ключевое слово virtual служит для перекрытия функции

2 класса Базовый класс (BaseClass) и от него идет Производный класс (DerivedClass), в обоих есть функция-элемент, ну допустим void print()
я создаю BaseClass * test = new DerivedClass, объект test является объектом класса BaseClass и соответственно test->print() будет вызываться из класса BaseClass, что бы при всех тех же условиях вызвать функцию-элемент из класса DerivedClass, мне надо в классе BaseClass, перед функцией-элементом void print() поставить ключевое слово virtual и тогда будет выполнятся функция из класса DerivedClass при том, что объект test у нас является объектом класса BaseClass.

Кликните здесь для просмотра всего текста
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
#include <iostream>
 
class BaseClass // Базовый класс
{
public:
BaseClass() { std::cout << "BaseClass constructor.. \n"; }
virtual ~BaseClass() { std::cout << "BaseClass destructor.. \n"; }
 
virtual void print() const
{ std::cout << "in BaseClass \n"; }
};
  
class DerivedClass : public BaseClass // Производный класс от BaseClass
{
public:
DerivedClass() { std::cout << "DerivedClass constructor.. \n"; }
virtual ~DerivedClass() { std::cout << "DerivedClass destructor.. \n"; }
 
 void print() const
{ std::cout << "in DerivedClass \n"; }
};
  
int main()
{
setlocale(LC_ALL,"");
 
BaseClass *test = new DerivedClass;
test->print();
 
system("pause");
return 0;
}


Вот для наглядности, в данном случае строчка 28 будет обращаться к функции-элементу из строки 19, за счет того, что в строке 9 у нас стоит ключевое слово virtual, если его убрать из 9-й строчки, то тогда будет вызываться функция-элемент из 9-й строчки.

PS я раньше думал что надо во всех местах ставить слово virtual и все функции-элементы делать виртуальными, что то типа такого.

PS2 скажите, если я обе функции print() (строчка 9 и строчка 19) сделаю virtual, тогда будет вызываться метод из строчки 19? Не подумайте что я просто обнаглел и мне тяжело поставить это слово и попробовать, просто если мне не изменяет память, вчера в одном из подобных примеров, с 2-мя virtual функция работала по другому, это мне память изменяет?

PS3 я все правильно понял или опять что то не так?
Спасибо за видео, оно помогло.
0
 Аватар для Schizorb
512 / 464 / 81
Регистрация: 07.04.2012
Сообщений: 869
Записей в блоге: 1
01.08.2013, 13:55
Цитата Сообщение от VLK Посмотреть сообщение
скажите, если я обе функции print() (строчка 9 и строчка 19) сделаю virtual, тогда будет вызываться метод из строчки 19?
В 19 не обязательно. Это будет нужно, если от DerivedClass будет тоже наследоваться новый класс, переопределюящий функцию.
1
 Аватар для VLK
198 / 170 / 19
Регистрация: 05.05.2013
Сообщений: 1,236
01.08.2013, 13:58  [ТС]
Цитата Сообщение от Schizorb Посмотреть сообщение
В 19 не обязательно. Это будет нужно, если от DerivedClass будет тоже наследоваться новый класс, переопределюящий функцию.
то, что не обязательно я понял, а вот если я все же пишу в обоих случаях, то какой именно будет вызван метод?
0
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
01.08.2013, 14:00
Цитата Сообщение от VLK Посмотреть сообщение
что бы при всех тех же условиях вызвать функцию-элемент из класса DerivedClass, мне надо в классе BaseClass, перед функцией-элементом void print() поставить ключевое слово virtual и тогда будет выполнятся функция из класса DerivedClass при том, что объект test у нас является объектом класса BaseClass.
нет. объект test у нас является объектом класса DerivedClass

Цитата Сообщение от Schizorb Посмотреть сообщение
В 19 не обязательно. Это будет нужно, если от DerivedClass будет тоже наследоваться новый класс, переопределюящий функцию.
нет. виртуальнай эта функция будет во всех потомках, независимо от того стоит ли virtual в DerivedClass

Цитата Сообщение от VLK Посмотреть сообщение
то, что не обязательно я понял, а вот если я все же пишу в обоих случаях, то какой именно будет вызван метод?
да хоть в обоих, хоть в одном базовом, функция как была виртуальной так ею и останется
2
 Аватар для Schizorb
512 / 464 / 81
Регистрация: 07.04.2012
Сообщений: 869
Записей в блоге: 1
01.08.2013, 14:01
Цитата Сообщение от VLK Посмотреть сообщение
BaseClass * test = new DerivedClass, объект test является объектом класса BaseClass и соответственно test->print() будет вызываться из класса BaseClass
Создается объект класса DerivedClass, в куче. И его адрес присваивается указателю на BaseClass. Указатель на базовый класс может хранить адрес объектов производного класса. Когда вызывается функция через этот объект, то неясно, какую именно нужно вызывать (вернее ясно, будет всегда вызываться из базового). Поэтому и нужно динамическое связывание, с виртуальными функциями.
0
 Аватар для Schizorb
512 / 464 / 81
Регистрация: 07.04.2012
Сообщений: 869
Записей в блоге: 1
01.08.2013, 14:04
Цитата Сообщение от VLK Посмотреть сообщение
то, что не обязательно я понял, а вот если я все же пишу в обоих случаях, то какой именно будет вызван метод?
Разницы не будет, если объявите функцию в производном, как virtual. То есть вызовется функция того класса, объектом которого является данный объект.

Если оставите virtual только в производном - будет работать по-другому.
0
 Аватар для VLK
198 / 170 / 19
Регистрация: 05.05.2013
Сообщений: 1,236
01.08.2013, 14:05  [ТС]
Цитата Сообщение от Jupiter Посмотреть сообщение
нет. виртуальнай эта функция будет во всех потомках, независимо от того стоит ли virtual в DerivedClass
т.е. (ключевое слово virtual в строке 9) и (ключевое слово virtual в строках 9 и 19) это одно и тоже и работа у них будет проходить по одному и тому же сценарию (правилам и т.д.)?
0
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
01.08.2013, 14:08
Цитата Сообщение от VLK Посмотреть сообщение
т.е. (ключевое слово virtual в строке 9) и (ключевое слово virtual в строках 9 и 19) это одно и тоже и работа у них будет проходить по одному и тому же сценарию (правилам и т.д.)?
да.
1
 Аватар для VLK
198 / 170 / 19
Регистрация: 05.05.2013
Сообщений: 1,236
01.08.2013, 14:10  [ТС]
то, что test будет объектом класса DerivedClass я понял, вопрос, т.е. когда не ясно какую функцию-элемент вызывать всегда вызывается функция-элемент базового класса?
И смысл тут заключается исключительно в неясности?
0
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
01.08.2013, 14:20
Цитата Сообщение от VLK Посмотреть сообщение
вопрос, т.е. когда не ясно какую функцию-элемент вызывать всегда вызывается функция-элемент базового класса?
перефразируй вопрос

Цитата Сообщение от VLK Посмотреть сообщение
И смысл тут заключается исключительно в неясности?
да в неясности какой же метод будет вызван и пофигизме, пример:
у нас есть фигуры и нам пофигу что это за фигуры, мы хотим их нарисовать
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
#include <iostream>
 
class Figure
{
public:
    virtual void draw() const = 0;
 
    virtual ~Figure() {}
};
 
class Circle : public Figure
{
    virtual void draw() const
    {
       std::cout << "draw circle" << std::endl;
    }
};
 
class Square : public Figure
{
    virtual void draw() const
    {
       std::cout << "draw square" << std::endl;
    }
};
 
int main()
{
    Circle a, b;
    Square c;
    Figure* arr[] = { &a, &c, &b };
 
    for (int i = 0; i < 3; ++i)
        arr[i]->draw();
}
2
 Аватар для Schizorb
512 / 464 / 81
Регистрация: 07.04.2012
Сообщений: 869
Записей в блоге: 1
01.08.2013, 14:20
Цитата Сообщение от VLK Посмотреть сообщение
test будет объектом класса DerivedClass
test - это не объект, а указатель, он просто хранит адрес объекта. В указателе никак не прописано, на объект какого именно класса он указывает - базового или производного.

Если используется статического связывание (невиртуальные функции), то выбор функции будет произведен на основе типа указателя на этапе линковки.

Если динамическое связывание (виртуальные функции) - то функция выберется в зависимости от конкретного типа объекта, адрес которого присвоен указателю, на этапе выполнения.
1
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9006 / 4707 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
01.08.2013, 14:44
Цитата Сообщение от Jupiter Посмотреть сообщение
да в неясности какой же метод будет вызван и пофигизме
В полифигизме всё дело (имхо).
1
 Аватар для VLK
198 / 170 / 19
Регистрация: 05.05.2013
Сообщений: 1,236
01.08.2013, 14:48  [ТС]
Цитата Сообщение от Jupiter Посмотреть сообщение
перефразируй вопрос
Кликните здесь для просмотра всего текста
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
#include <iostream>
 
class BaseClass // Базовый класс
{
public:
BaseClass() { std::cout << "BaseClass constructor.. \n"; }
virtual ~BaseClass() { std::cout << "BaseClass destructor.. \n"; }
 
void print() const
{ std::cout << "in BaseClass \n"; }
};
  
class DerivedClass : public BaseClass // Производный класс от BaseClass
{
public:
DerivedClass() { std::cout << "DerivedClass constructor.. \n"; }
virtual ~DerivedClass() { std::cout << "DerivedClass destructor.. \n"; }
 
void print() const
{ std::cout << "in DerivedClass \n"; }
};
  
int main()
{
setlocale(LC_ALL,"");
 
BaseClass *test = new DerivedClass;
test->print();
 
system("pause");
return 0;
}


Вот пример, тоже что приводилось на предыдущей странице ранее, толь без использование virtual (разве что деструктор, но он погоды тут не делает), мы создаем объект test, он является объектом класса DerivedClass (опустим тот момент, что это не объект, а указатель на объект), соответственно в обоих классах есть одна и та же функция-элемент - print()

По логике, если объект test относится к классу DerivedClass, то и функция элемент print() должна вызываться из этого класса, но на деле происходит обратное..

Тогда мы меняем логику, если есть 2 класса, один является наследником другого, и в обоих присутствует одна и та же по наименованию функция-элемент, то при обращении к ней если не указано явно, к какой именно, программа \ компилятор, всегда будет обращаться к функции элементу базового класса, правильно?

И второе, что бы указать явно программе \ компилятору к чему именно обращаться, существует ключевое слово virtual, если оно присутствует, то программа будет обращаться НЕ к базовому классу, а к производному классу (речь пока идет 2-х классах), правильно?
0
Неэпический
 Аватар для Croessmah
18146 / 10730 / 2066
Регистрация: 27.09.2012
Сообщений: 27,029
Записей в блоге: 1
01.08.2013, 14:54
Цитата Сообщение от VLK Посмотреть сообщение
но на деле происходит обратное..
потому что пост #8
Цитата Сообщение от Croessmah Посмотреть сообщение
Зато показывает, что без использования полиморфизма используется статическое связывание, поэтому все функции будут проставлены в зависимости от типа указателя, а не от типа созданного реально объекта, как это было бы если бы функции были виртуальны и использовалось бы динамическое связывание
Добавлено через 1 минуту
Цитата Сообщение от VLK Посмотреть сообщение
всегда будет обращаться к функции элементу базового класса, правильно?
Какой указатель, к тому и привяжется.

Добавлено через 58 секунд
Цитата Сообщение от VLK Посмотреть сообщение
компилятору к чему именно обращаться, существует ключевое слово virtual
virtual нужен для позднего связывания
2
 Аватар для VLK
198 / 170 / 19
Регистрация: 05.05.2013
Сообщений: 1,236
01.08.2013, 15:08  [ТС]
ох.. я только что то нащупаю, как вы мне даете новую порцию непонятных мне слов и словосочетаний.. "позднего связывания", "статическое связывание" и т.д.

Ладно, пойду поем и продолжу изучение (ну как можно учится на голодный желудок..)

Ни куда не уходите
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9006 / 4707 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
01.08.2013, 15:41
Цитата Сообщение от VLK Посмотреть сообщение
Ни куда не уходите
Да тута мы все.
Я вот подумал: чтобы понять зачем нужен полиморфизм, нужно же сначала понять зачем он не нужен? То есть простая идея многократного использования кода, без его модификации. Пример опять мутный:
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
#include <iostream>
using namespace std; 
class A
{
public:     
A()
:x(0)
{
cout<<"default constr"<<endl;}
A(int a)
{
cout<<"one param constr"<<endl;
x=a;
 }
A(A& rhs){
x=rhs.getX();
 }
 A& operator=(A& rhs){
x=rhs.getX();
return *this;
 }
 int getX(){return x;} 
static const char* ch_constA;
    private:
        int x;
        
        static const char* ch_const_Init(){
return "abcdefgh";
        }
};
const char* A::ch_constA=A::ch_const_Init();
 
class B :public A
{
public:
B()
:A(0)
{}
B(int a)
:A(a)
{}
static const char* ch_constB;//мы не можем избавиться от ch_constA, но можем определить новую
//при этом не затрагивая базовый класс
 
static const char* ch_const_Init(){//функцию инициализации базового класса используем для определения новой)
//тут удобно скрыть метод базового класса новым
return "iklmnoprst";
        }
};
const char* B::ch_constB=B::ch_const_Init();//вызывается для B
 
 
int main() {
A a = 'a';
cout<<a.getX()<<endl;
B c = 'a' + 5;
cout<<c.getX()<<endl;
cout<<c.ch_constB<<endl;
std::system("pause"); 
    return 0;
}
В этом случае перекрытие метода базового класса помогает.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
01.08.2013, 15:41
Помогаю со студенческими работами здесь

Функция file_exists(test/01.ogg) работает, если папка test находится в корневом каталоге моего сервера.
Столкнулся с интересной проблеммой. Функция file_exists(test/01.ogg) работает, если папка test находится в корневом каталоге моего...

Что такое unit test и regression test
Что такое unit test и regression test?

Запишите в файл test.out все строки из файла test.in, в которых встречается слово "Hello"
В файле test.in записан текст на английском языке. Запишите в файл test.out все строки из файла test.in, в которых встречается слово...

Почему команда «dir>test.txt» работает, а команда «ftp /?>test.txt» — нет?
Пробовала без пробелов, что тут еще можно попробовать непонятно Выводит в окно командной строки. Как исправить?

У себя на локале я пишу ссылку test.php?city=1 и в test.php он видет $city==1
У себя на локале я пишу ссылку test.php?city=1 и в test.php он видет $city==1 А на хосте не видет. Че это за херня?????


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 09.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru