ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > Программирование_OLD > С/С++, C#, Delphi, .NET, Asm
   
 
 
Опции темы Поиск в этой теме Опции просмотра

  #3041  
Старый 01.06.2009, 15:02
mr.The
Познавший АНТИЧАТ
Регистрация: 30.04.2007
Сообщений: 1,206
Провел на форуме:
4778940

Репутация: 1257


Отправить сообщение для mr.The с помощью ICQ
По умолчанию

Переход из https://forum.antichat.ru/showpost.php?p=1302836&postcount=234

Гугл подсказал, что для динамической линковки нужно указать параметр -dynamic либо -rdynamic.
Размер не изменился, а rdynamic линкер вообще не узнал:
Цитата:
mingw32-g++.exe: unrecognized option `-rdynamic'
 

  #3042  
Старый 01.06.2009, 15:07
razb
Постоянный
Регистрация: 24.03.2009
Сообщений: 670
Провел на форуме:
2868783

Репутация: 414


Отправить сообщение для razb с помощью ICQ
По умолчанию

Для динамической линковки нужны .dll либы, которых видимо нету поэтому компилятор автоматически собирает статически
 

  #3043  
Старый 01.06.2009, 15:19
Дикс
Познавший АНТИЧАТ
Регистрация: 16.04.2006
Сообщений: 1,488
Провел на форуме:
2209675

Репутация: 537


Отправить сообщение для Дикс с помощью ICQ
По умолчанию

есть класс с несколькими свойствами типа
int date;
int minute;
и тп

необходимо реализовать методы для инкремента/декремента этих свойств.

я знаю как перегрузить операторы самого класса, но как грамотно сделать методы для каждого свойства?
что-то типа

DateTime obj;
obj.date++;
obj.minute--;

так вообще можно сделать? или надо писать стопку методов, типа void hourInc(); void hourDec(); ...
 

  #3044  
Старый 01.06.2009, 15:24
Fata1ex
Постоянный
Регистрация: 12.12.2006
Сообщений: 906
Провел на форуме:
4205500

Репутация: 930


По умолчанию

DateTime obj;
obj.date++;
obj.minute--;

Если сделать поля public, то такой способ будет возможен
 

  #3045  
Старый 01.06.2009, 15:31
razb
Постоянный
Регистрация: 24.03.2009
Сообщений: 670
Провел на форуме:
2868783

Репутация: 414


Отправить сообщение для razb с помощью ICQ
По умолчанию

Цитата:
так вообще можно сделать? или надо писать стопку методов, типа 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..
 

  #3046  
Старый 01.06.2009, 15:59
Дикс
Познавший АНТИЧАТ
Регистрация: 16.04.2006
Сообщений: 1,488
Провел на форуме:
2209675

Репутация: 537


Отправить сообщение для Дикс с помощью ICQ
По умолчанию

Цитата:
Сообщение от Fata1ex  
DateTime obj;
obj.date++;
obj.minute--;

Если сделать поля public, то такой способ будет возможен
как?? это я и хочу узнать
 

  #3047  
Старый 01.06.2009, 16:01
Fata1ex
Постоянный
Регистрация: 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;
}
Вообще это небезопасно
 

  #3048  
Старый 01.06.2009, 16:05
razb
Постоянный
Регистрация: 24.03.2009
Сообщений: 670
Провел на форуме:
2868783

Репутация: 414


Отправить сообщение для razb с помощью ICQ
По умолчанию

Цитата:
Вообще это небезопасно
Именно. Все атрибуты лучше хранить как protected или private, а доступ к ним предоставлять через соответствующие методы, тк открытость нарушает модель инкапсуляции и обьекты классов по большому счету ничем не отличаются от структур.
 

хм
  #3049  
Старый 01.06.2009, 17:02
Lee_fx
Познающий
Регистрация: 27.09.2008
Сообщений: 57
Провел на форуме:
265628

Репутация: 23
По умолчанию хм

Помогите разобраться:
Код:
char * ptr = new char[10];
cin >> ptr; //вводим abcdefghijklmn - 14 символов
cout << ptr; //выводит abcdefghijklmn
Собственно почему? Ведь размер ptr 10 байт, а выводится 15?
Как вводить данные чтобы избежать этого переполнения?
 

  #3050  
Старый 01.06.2009, 17:11
razb
Постоянный
Регистрация: 24.03.2009
Сообщений: 670
Провел на форуме:
2868783

Репутация: 414


Отправить сообщение для razb с помощью ICQ
По умолчанию

Цитата:
Как вводить данные чтобы избежать этого переполнения?
Код:
cin.read(char *buffer, int n)
 
 





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ