Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
 Аватар для Leeto
7 / 7 / 3
Регистрация: 23.12.2011
Сообщений: 372
Записей в блоге: 1

Overloading [] operators

28.07.2012, 10:31. Показов 1883. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Преект компилируется нормально. По заданию нужно чтобы было реализованно 2 версии оператора [] одна для чтения другая для записи
типа дано что нужно их декларироватьмплемн вот таким образом
Point& operator [] (int index);
const Point& operator [] (int index) const;

имплементацию надо сделать самому

ПРОБЛЕМА:
Я в имплементации добавил чтоб он мне выводим какой оператор вызывается для чтения или для записи. Вообщем каким то боком получается что тот который конст (для чтения ) вообще за проект не разу не вызывался. Что не так ?


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
//array.hpp // A header file for the Array class to your current project.
#ifndef Array_HPP
#define Array_HPP
 
#include "Point.hpp"
#include <iostream>
 
class Array
{
private:    
 
    Point* m_data;                  // A data member for a dynamic C array of Point objects (Point* m_data).
    int m_size;                     // A data member for the size of the array.
 
public: 
 
    //----------- Declaration of Constructors -----------//
    Array::Array();                         // Default constructor
    Array::Array(const int new_size);       // Constructor with size argument.
  
    //----------- Declaration of Modificator(s) member functions -----------//
    void   SetElement(const Point& pt, int index);          // Set Element to a Array object
 
 
    //----------- Declaration of Operators Overloading the class's members -----------//
    Array& operator =  (const Array& source);               // Overloading Assignment operator.
    Point& operator [] (int index);                         // Return a reference to needed m_data. Using for writing 
    const Point& operator [] (int index) const ;            // Return a reference to needed m_data. Using for reading
 
 
    //----------- Declaration of Global (friend) Ostream << Operator  -----------//
    friend std::ostream& operator << (std::ostream& os, const Array& ar);           // Overloading << operator
 
}   /*!!!*/; /*!!!*/
#endif // Array_HPP

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
#ifndef Point_HPP // anti multiply including gates
#define Point_HPP
 
#include <string>
#include <iostream>
#include <sstream>
 
class Point
{   
    private:        //  declaration of private data members 
    double x;       // X coordinate
    double y;       // Y coordinate
 
    public:         // public declaration of data members (in given example haven't ) and member functions 
 
 
        //----------- Declaration of Constructors -----------//
    Point();                                        // Default constructor
    Point(double newX , double newY);               // Constructor 
    explicit Point(double value /*, double newY*/);         // Second Constructor 
    Point (const Point& ObjectOfClassPoint);        //COPY constructor
    ~Point(); // 
 
    //----------- Declaration of  Accessors member functions -----------//
    std::string ToString() const;    
    double X() const;                   
    double Y() const;   
 
    //----------- Declaration and  of and Implementaion of setters member functions -----------//
    void X(double newX) {x = newX;};    // The x-coordinate
    void Y(double newY) {y = newY;};    // The y-coordinate
 
    //----------- Declaration of Global Ostream << Operator  -----------//
    friend std::ostream& operator << (std::ostream& out, Point const& ObjPoint); 
    friend std::ostream& operator << (std::ostream& out, Point const *objPoint);
    
}   /*!!!*/; /*!!!*/
 
//----------- Implementaion (inline) of getters member functions -----------//
 
inline  double Point::X() const {return x;};                    
inline  double Point::Y() const {return y;};    
 
#endif // Point_HPP

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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
//Array.cpp
#include "Array.hpp"
                                        
    //----------- Implementation of Constructors -----------//
    Array::Array() :  m_size(10), m_data(new Point[m_size])                                    
            {
                std::cout << "Array Default Constructor was called " ;
            }
 
    Array::Array(const int new_size) :m_size(new_size), m_data(new Point[m_size])       //specified by the size input argument
                                    
            {   
 
                std::cout << "Array Constructor was called "; 
            }
 
    //----------- Declaration and  of Modificators member functions -----------//
    void Array::SetElement(const Point& ObjPoint, int index)
        {   
    
            if (index <= m_size) // When the index is out of bounds, ignore the “set”. 
            {
                m_data[index] = ObjPoint;
                std::cout << "Set Element " << ObjPoint  << std::endl;
            }
            else 
                std::cout << "The Element with index [ "<< index << " ] and\ndata ( " << m_data <<  " ) wasn't setted. "
             << " Ignore the set" <<  std::endl;
        }
 
 
 
    //----------- Implementation of Operators Overloading the class's member -----------//
    const Point& Array::operator [] (int index) const
{   
 
    std::cout << " []  operator for reading was called " ; 
 
    if (index > this->m_size)
    {
        std::cout << "OUT OF BOUND ";
        return this->m_data[0];
    }
    return m_data[index];
}
 
    Point& Array::operator [] (int index)
        {   
 
            std::cout << "[] operator for writing was called \n" ; 
 
            if (index > this->m_size)
            {
                std::cout << "OUT OF BOUND \n" ; 
                return this->m_data[0];
            }
            return m_data[index];
 
 
 
        }
 
 
    Array& Array::operator = (const Array& source)
        {
            
 
            std::cout << " In the Array Assignment operator\n";
 
            if (this == &source)
                {
                std::cout << "Same Array \n"; 
                return *this;
                }
 
            delete [] m_data;
            std::cout << "Deleted m_data array\n";
 
            m_size = source.m_size;                             // shallow copy - this is not dynamic alloc
 
            if (source.m_data)                                  // if not zeros then there is a ref.
            {
                std::cout <<"im here\n"; 
 
                m_data = new Point[source.m_size];              // create a new pointee.
 
                for (int i = 0; i < source.m_size; i++)
                    m_data[i]    =    source.m_data[i];         //copy the points from/to array
            }
            else
                m_data = 0;  //NULL
 
            return *this;
        }
 
    
 
 
    //----------- Implementation of GLOBAL(friend) Ostream << Operator  -----------//
std::ostream& operator << (std::ostream& os, const Array& ObjArray)
{
    os << "\nArray Size = " << ObjArray.m_size << std::endl;
 
        for (int i = 0; i < ObjArray.m_size; i++)
            os << "Array [" << i << "]= "<< ObjArray.m_data[i] << "\n";
 
    return os;
}
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
#include "Point.hpp"
 
            //----------- Implementation of Constructors -----------//
 
    Point::Point() : x(0) , y(0)                                                        // Default constructor (implemented using colon syntax )
        { 
        //  std::cout << "hi my default constructor\n\n\t";
        }                           
 
    Point::Point(double newX , double newY) : x(newX)  , y(newY)                        // Constructor 
        { 
            //std::cout << "hi my constructor\n\n\t"; 
        }               
 
    Point::Point(double value /*, double newY*/) : x(value)  /*, y(newY)    */          // Second Constructor 
        { 
        //std::cout << "hi my constructor\n\n\t"; 
        }   
 
    Point::~Point()                                                                     // Destructor
        {
            //std::cout << "bye my point..\n";
        }                                    
 
    Point::Point (const Point& ObjectOfClassPoint)                                      // Copy constructor
        {
            
            x = ObjectOfClassPoint.x;
            y = ObjectOfClassPoint.y;
        }
        
            //----------- Implementation of Accessor(s) member functions -----------//
 
    std::string Point::ToString() const
        {
            
            std::ostringstream os;                                // std::stringstream object
            os << " Point (" << x << ", " << y << ")";            // customization of output 
            return os.str();                                      
        }
 
    //----------- Implementation of GLOBAL Ostream << Operator  -----------//
 
    std::ostream& operator << (std::ostream& out, Point const& ObjPoint)
{
  
 
    return out << "[" << ObjPoint.x << "," << ObjPoint.y << "]" ; 
    
}
 
        std::ostream& operator << (std::ostream& out, Point const *objPoint)
{
  
    return out << "[" << objPoint->x << "," << objPoint->y << "]" ; 
    
}
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
66
67
68
69
70
71
72
73
74
//main.cpp
 
#include <iostream>
#include "Point.hpp"
#include "Array.hpp"
 
 
 
int main()
 
    {
 
    int i = 0;                                              
    int size_of_array = 5;                                      
    Point** MyArrayOfPointers;
    MyArrayOfPointers = new Point*[size_of_array];                      //Creating an array of Point pointers with 3 elements on the heap.
    
    int some_data_for_x[5] = {1830 , 1901 , 1914, 1900 , 1895} ; 
    int some_data_for_y[5] = {1903 , 1947 , 1211, 1969 , 1789} ; 
 
   
    for (i = 0 ; i <size_of_array; i++ )                                // Create for each element in the array a point on the heap.
        {
            MyArrayOfPointers[i] = new Point(some_data_for_x[i],                
                                                some_data_for_y[i]);                                                                                        
        }
   
    std::cout << "\n\t Setting elements of MemoryManagerArray \n";
 
    Array* MemoryManagerArray = new Array(size_of_array); 
    MemoryManagerArray->SetElement(*MyArrayOfPointers[0],0);                // Setting elements of MemoryManagerArray
    MemoryManagerArray->SetElement(*MyArrayOfPointers[1],1);
    MemoryManagerArray->SetElement(*MyArrayOfPointers[2],2);
    MemoryManagerArray->SetElement(*MyArrayOfPointers[3],3);
    MemoryManagerArray->SetElement(*MyArrayOfPointers[4],17);               // The set will be ignored, because out of bounds
  
    std::cout << "\n\t ---TEST OF [] operator--- \n";
 
    Array* SquareBracktsTESTArray = new Array(size_of_array);
    SquareBracktsTESTArray->SetElement(*MyArrayOfPointers[0],0);                        // Setting elements to Array 
    SquareBracktsTESTArray->SetElement(*MyArrayOfPointers[1],1);
    SquareBracktsTESTArray->SetElement(*MyArrayOfPointers[2],2);
    SquareBracktsTESTArray->SetElement(*MyArrayOfPointers[3],3);
    SquareBracktsTESTArray->SetElement(*MyArrayOfPointers[4],4);
 
    std::cout << "\nSquareBracktsTESTArray [] operator TEST\nReading a element from a given place : \n\n" 
              << (*SquareBracktsTESTArray)[0] << "\n"
              << (*SquareBracktsTESTArray)[1] << "\n"
              << (*SquareBracktsTESTArray)[2] << "\n"
              << (*SquareBracktsTESTArray)[3] << "\n"
              << (*SquareBracktsTESTArray)[4] << "\n"
              << std::endl;
 
    std::cout << "\nSquareBracktsTESTArray [] operator TEST.\nWriting a element to a given place : \n\n" ;
 
    std::cout << "Now [] operator we write [4] and [3] element from place [0] : " ; 
 
    (*SquareBracktsTESTArray)[4] = *MyArrayOfPointers[0]; 
    (*SquareBracktsTESTArray)[3] = *MyArrayOfPointers[0]; 
    
              std::cout << "\n Read again using [] operator:  \n" ;
                 (*SquareBracktsTESTArray)[0].ToString(); 
              std::cout << (*SquareBracktsTESTArray)[1] << "\n"
              << (*SquareBracktsTESTArray)[2] << "\n"
              << (*SquareBracktsTESTArray)[3] << "\n"
              << (*SquareBracktsTESTArray)[4] ; 
 
 
    
    
    std::cout << std::endl; 
    return 0;
 
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
28.07.2012, 10:31
Ответы с готовыми решениями:

function overloading
День добрый. Что такое function overloading я понимаю, но вот не очень въезжаю, что требуется от меня в задании (учусь в универе...

С концами запутался с operator overloading
Всем привет. Тема operator overloading - моё слабое место, очень хочу разобраться. Читаю всякие статейки (могу скинуть ссылки, если...

Чем заменить метод Operators.CompareString?
Всем привет, хочу узнать чем можно заменить из Framework 4.5 на Framework 2.0 Кусок кода: if...

17
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
28.07.2012, 12:13
У вас этот код работает?
1
 Аватар для Schizorb
512 / 464 / 81
Регистрация: 07.04.2012
Сообщений: 869
Записей в блоге: 1
28.07.2012, 12:22
Посмотри эту тему, по-моему похожая проблема:

Перегрузка оператора []
1
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
28.07.2012, 12:30
В 10 строке Array.cpp нужно так:
C++
1
Array::Array(const int new_size) :m_size(new_size), m_data(new Point[new_size])
1
 Аватар для Toshkarik
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
28.07.2012, 12:31
Потому что const версия будет вызываться только для const объектов. Если есть две перегрузки элемент-функции ( const и не const ), то компилятор выбирает нужную по спецификатору const созданного объекта. Если объект не-const, то и функция вызывается не-const. Если же есть только одна версия функции ( const или не-const ), то для константных объектов нельзя вызывать не константные элемент-функции, в то же время для не константных объектов может вызываться константная элемент-функция.
1
 Аватар для Leeto
7 / 7 / 3
Регистрация: 23.12.2011
Сообщений: 372
Записей в блоге: 1
28.07.2012, 12:53  [ТС]
Цитата Сообщение от alsav22 Посмотреть сообщение
У вас этот код работает?
у меня да. У тебя не работает ?
0
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
28.07.2012, 12:55
Цитата Сообщение от Leeto Посмотреть сообщение
у меня да. У тебя не работает ?
Если исправить, как я написал, то работает, а без этого виснет в конструкторе Array.
1
 Аватар для Toshkarik
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
28.07.2012, 13:01
alsav22, это происходит, потому что в определении класса, size объявлена после указателя. Данные инициализируются именно в том порядке, в котором они объявлены в определении класса, а не в том, в котором указаны в списке инициализаторов конструктора. Видать компилятор автора сам как то решил проблему, или просто дело случая - в переменной size до инициализации находилось положительное число.
Можно было просто переместить объявление size выше указателя в определении класса.
1
 Аватар для Leeto
7 / 7 / 3
Регистрация: 23.12.2011
Сообщений: 372
Записей в блоге: 1
28.07.2012, 13:03  [ТС]
Цитата Сообщение от Toshkarik Посмотреть сообщение
Потому что const версия будет вызываться только для const объектов. Если есть две перегрузки элемент-функции ( const и не const ), то компилятор выбирает нужную по спецификатору const созданного объекта. Если объект не-const, то и функция вызывается не-const. Если же есть только одна версия функции ( const или не-const ), то для константных объектов нельзя вызывать не константные элемент-функции, в то же время для не константных объектов может вызываться константная элемент-функция.
Круто !!! спасибо большое !
0
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
28.07.2012, 13:33
Цитата Сообщение от Toshkarik Посмотреть сообщение
alsav22, это происходит, потому что в определении класса, size объявлена после указателя. Данные инициализируются именно в том порядке, в котором они объявлены в определении класса, а не в том, в котором указаны в списке инициализаторов конструктора. Видать компилятор автора сам как то решил проблему, или просто дело случая - в переменной size до инициализации находилось положительное число.
Можно было просто переместить объявление size выше указателя в определении класса.
Я тоже об этом подумал. Сейчас на другом компиляторе проверю.

Добавлено через 5 минут
Leeto, в array.hpp уберите лишние квалификаторы у конструкторов (19, 20). MSVC это пропускает, а mingv - нет.

Добавлено через 17 минут
Цитата Сообщение от Toshkarik Посмотреть сообщение
alsav22, это происходит, потому что в определении класса, size объявлена после указателя. Данные инициализируются именно в том порядке, в котором они объявлены в определении класса, а не в том, в котором указаны в списке инициализаторов конструктора. Видать компилятор автора сам как то решил проблему, или просто дело случая - в переменной size до инициализации находилось положительное число.
Можно было просто переместить объявление size выше указателя в определении класса.
Mingv только предупреждения выдаёт и сам порядок инициализации правильный делает.
1
 Аватар для Toshkarik
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
28.07.2012, 13:54
alsav22, нет, ничего он не правит, просто везет, что число положительное. Можете проверить данным кодом:
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
class test {
 public:
   test() {
      count++;
   }
   ~test() {
      count--;
   }
   
   static int count;
};
 
int test::count = 0;
 
class some {
 public:
   some( int newSize )
      : size( newSize ),
        ptr( new test [ size ]) 
   {
      
   }
   
 private:
   test *ptr;
   int size;
};
 
int main () {
   some obj( 10 ); //число объектов, которое мы хотим создать
   
   std::cout << test::count << std::endl; //реальное число объектов, которое создалось ( если вообще создалось )
 
   return 0;
}
Тут не то что везет, принимаемый параметр операцией new - size_t, то есть беззнаковое целое. То есть, если даже int будет отрицательным, при приведении типа к size_t само собой значение становится положительным.
0
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
29.07.2012, 02:00
Я так сделал. Добавил в Array ещё одну переменную (поставил первой в объявлении). В конструкторе, в списке инициализаторов, присвоил ей значение m_size и ввывел её значение на консоль. MSVC показал -842150451, mingv 0. Если, как вы пишите, происходит приведение к size_t, то тут ошибку (в MSVC) во время выполнения, выдаёт new, наверное, из-за слишком большого размера массива. Если напсисать: new Point[(size_t)(-842150451)], то компилятор сразу показывает ошибку. В mingv создаётся нулевой массив. Это и по выводу на консоль (если сделано в конструкторах Point) видно.

Добавлено через 16 минут
Попробовал так:
C++
1
std::cout << (size_t)(-842150451)<<std::endl;
В mingv: 18446744072867401165
В MSVC: 3452816845
0
 Аватар для Toshkarik
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
29.07.2012, 02:37
У меня, при запуске выше приведенного мной кода, выводить когда чуть больше 2 млрд., когда чуть меньше, и это вместо ожидаемых всего лишь 10. Причем в Debug профиле. На liveworkspace вообще исключение bad alloc. Так что это ошибка, и сомневаюсь что компиляторы что то будут сами исправлять.
0
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
29.07.2012, 02:43
Цитата Сообщение от Toshkarik Посмотреть сообщение
это ошибка, и сомневаюсь что компиляторы что то будут сами исправлять.
Я не спорю об этом. Согласен, что mingv ничего не исправляет. Я уже о другом. Почему mingv, при выделении памяти под Array, заполняет её 0 (или не заполняет?), а MVSC этого не делает, и там мусор?
0
 Аватар для Toshkarik
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
29.07.2012, 03:03
С этим уже к разработчикам компилятора. С какими параметрами компилируете?
0
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
29.07.2012, 03:10
"...при выделении динамической памяти..."

Добавлено через 3 минуты
Цитата Сообщение от Toshkarik Посмотреть сообщение
С какими параметрами компилируете?
Понятия не имею. По умолчанию. Сейчас посмотрел, в настройках компилятора ни один флаг не установлен.
0
 Аватар для Toshkarik
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
29.07.2012, 03:16
Если в debug режиме, то вполне возможно, и это нормально.
0
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
29.07.2012, 03:40
Если в mingv просто создать объект Array:
C++
1
Array p1(3);
, то происходит бесконечный цикл с вызовом конструктора по умолчанию Point().

Добавлено через 2 минуты
Цитата Сообщение от Toshkarik Посмотреть сообщение
Если в debug режиме, то вполне возможно, и это нормально
В release то же самое.

Добавлено через 18 минут

Не по теме:

Вывод. Так делать нельзя. И на этом можно остановиться.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
29.07.2012, 03:40
Помогаю со студенческими работами здесь

Ошибка Relational Operators Are Not Supported In Text Fields
Делаю печать по указанным критериям. При : If (Doc.Data1(0)&lt;&gt;&quot;&quot;) And (Doc.Data2(0)&lt;&gt;&quot;&quot;) And (Doc.Problema(0)=&quot;&quot;)...

Unresolved overloading
Выходит ошибка: Unresolved overloading В аналогичных постах говорилось что-то про аннотацию типов, но я так и не понял, как её применять...

Полиморфизм и overloading
является ли overloading реализацией полиморфизма

Overloading+Overriding
Дано : class A { boolean f(A a) { return true; } } class B extends A{ boolean f(A a) { return false; } boolean...

Как посчитать max/ min используя только relational operators?
Возникла задача подсчитать max/ min 5 чисел используя только relational operators??? Ума не приложу как это делается. :scratch: ...


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru