ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.

01.06.2009, 15:02
|
|
Познавший АНТИЧАТ
Регистрация: 30.04.2007
Сообщений: 1,206
Провел на форуме: 4778940
Репутация:
1257
|
|
Переход из https://forum.antichat.ru/showpost.php?p=1302836&postcount=234
Гугл подсказал, что для динамической линковки нужно указать параметр -dynamic либо -rdynamic.
Размер не изменился, а rdynamic линкер вообще не узнал:
mingw32-g++.exe: unrecognized option `-rdynamic'
|
|
|

01.06.2009, 15:07
|
|
Постоянный
Регистрация: 24.03.2009
Сообщений: 670
Провел на форуме: 2868783
Репутация:
414
|
|
Для динамической линковки нужны .dll либы, которых видимо нету поэтому компилятор автоматически собирает статически
|
|
|

01.06.2009, 15:19
|
|
Познавший АНТИЧАТ
Регистрация: 16.04.2006
Сообщений: 1,488
Провел на форуме: 2209675
Репутация:
537
|
|
есть класс с несколькими свойствами типа
int date;
int minute;
и тп
необходимо реализовать методы для инкремента/декремента этих свойств.
я знаю как перегрузить операторы самого класса, но как грамотно сделать методы для каждого свойства?
что-то типа
DateTime obj;
obj.date++;
obj.minute--;
так вообще можно сделать? или надо писать стопку методов, типа void hourInc(); void hourDec(); ...
|
|
|

01.06.2009, 15:24
|
|
Постоянный
Регистрация: 12.12.2006
Сообщений: 906
Провел на форуме: 4205500
Репутация:
930
|
|
DateTime obj;
obj.date++;
obj.minute--;
Если сделать поля public, то такой способ будет возможен
|
|
|

01.06.2009, 15:31
|
|
Постоянный
Регистрация: 24.03.2009
Сообщений: 670
Провел на форуме: 2868783
Репутация:
414
|
|
так вообще можно сделать? или надо писать стопку методов, типа void hourInc(); void hourDec(); ...
Можно реализовать два метода, один на инкримент и один на декримент, и передавать в них типа флага который показывал бы над чем надо сделать inc/dec, например:
Код:
void DataTime::IncDate(int& field)
{
switch(field)
{
case 0: date++; break;
case 1: minute++; break;
...
}
}
Для большего удобства имена полей можно задефайнить:
Код:
#define FIELD_DATE 0
#define FIELD_MIN 1
и т.д. И тогда вызывать obj.IncDate(FIELD_DATE);
А вообще дело вкуса, можешь и пачку методов написать на каждый атрибут класса)
Последний раз редактировалось razb; 01.06.2009 в 15:38..
|
|
|

01.06.2009, 15:59
|
|
Познавший АНТИЧАТ
Регистрация: 16.04.2006
Сообщений: 1,488
Провел на форуме: 2209675
Репутация:
537
|
|
Сообщение от Fata1ex
DateTime obj;
obj.date++;
obj.minute--;
Если сделать поля public, то такой способ будет возможен
как?? это я и хочу узнать
|
|
|

01.06.2009, 16:01
|
|
Постоянный
Регистрация: 12.12.2006
Сообщений: 906
Провел на форуме: 4205500
Репутация:
930
|
|
Код:
class m {
public :
int a;
int b;
m() {a = 1; b = 1;}
};
int main () {
m ob;
ob.a++;
ob.b++;
cout << ob.a << " " << ob.b << endl;
return 0;
}
Вообще это небезопасно
|
|
|

01.06.2009, 16:05
|
|
Постоянный
Регистрация: 24.03.2009
Сообщений: 670
Провел на форуме: 2868783
Репутация:
414
|
|
Именно. Все атрибуты лучше хранить как protected или private, а доступ к ним предоставлять через соответствующие методы, тк открытость нарушает модель инкапсуляции и обьекты классов по большому счету ничем не отличаются от структур.
|
|
|

01.06.2009, 17:02
|
|
Познающий
Регистрация: 27.09.2008
Сообщений: 57
Провел на форуме: 265628
Репутация:
23
|
|
хм
Помогите разобраться:
Код:
char * ptr = new char[10];
cin >> ptr; //вводим abcdefghijklmn - 14 символов
cout << ptr; //выводит abcdefghijklmn
Собственно почему? Ведь размер ptr 10 байт, а выводится 15?
Как вводить данные чтобы избежать этого переполнения?
|
|
|

01.06.2009, 17:11
|
|
Постоянный
Регистрация: 24.03.2009
Сообщений: 670
Провел на форуме: 2868783
Репутация:
414
|
|
Как вводить данные чтобы избежать этого переполнения?
Код:
cin.read(char *buffer, int n)
|
|
|
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|