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

29.01.2009, 19:23
|
|
Участник форума
Регистрация: 07.01.2009
Сообщений: 237
Провел на форуме: 745649
Репутация:
97
|
|
Кто подскажет: можно ли сделать вот так:
Код:
...
struct MailPass
{
char *mail;
char *pass;
};
...
int main(void)
{
....
MailPass * CurrentMailPassPointer;
MailPass CurrentMailPass;
...
CurrentMailPassPointer = MailPassRead(MailPassList);
CurrentMailPass.mail = (* CurrentMailPassPointer).mail;
CurrentMailPass.pass = (* CurrentMailPassPointer).pass;
...
}
MailPass *MailPassRead(FILE *fd)
{
......
MailPass mailpass;
char a[255] = "\0";
mailpass.mail = new char[sizeof(strtok(a,";"))];
mailpass.pass = new char[sizeof(strtok(0,";"))];
strcpy(mailpass.mail,strtok(a,";"));
strcpy(mailpass.pass,strtok(0,";"));
....
return &mailpass;
}
|
|
|

29.01.2009, 21:56
|
|
Новичок
Регистрация: 23.07.2008
Сообщений: 28
Провел на форуме: 104504
Репутация:
1
|
|
Полазил, поискал ошибку...так и не разобрался. Вот код целиком:
#include <stdlib.h>
#include <iostream>
#include <iomanip>
#include <time.h>
class Koloda{
private:
int count;
int cards[2][2]={{6,7},{1,2}};//Ругается вот тут
public:
Koloda(){
count=36;
};
Koloda(int c){
count=c;
};
~Koloda(){};
void Take_card(){
int i;
int j;
do {
srand(time(NULL));
i=rand()%9;
j=rand()%4;
}
while(cards[i][j]!=0);
cards[i][j]=0;
if(count>0)
count--;
else
std::cout<<"Карт больше нет";
};
};
Добавленно позже: Странно...почему форматирование не сохранилось?
|
|
|

29.01.2009, 21:59
|
|
Leaders of Antichat - Level 4
Регистрация: 16.01.2006
Сообщений: 1,966
Провел на форуме: 21768337
Репутация:
3486
|
|
Добавляй в тег [code]
|
|
|

29.01.2009, 22:39
|
|
Новичок
Регистрация: 23.07.2008
Сообщений: 28
Провел на форуме: 104504
Репутация:
1
|
|
Не-а. Теперь еще и ругается на то, что count неизвестная переменная(ссылаясь сюда if(count>0){count--;})
|
|
|

29.01.2009, 22:59
|
|
Познавший АНТИЧАТ
Регистрация: 01.06.2008
Сообщений: 1,047
Провел на форуме: 5321514
Репутация:
3313
|
|
w_2k
1. Не используй инлайн функции(это функции, которые определены в самом классе). Их содержимое как-бы копируется на место вызова, что приводит к плохим последствиям. Выноси все отдельно в файл.
2. Не используй srand(time(NULL)); в цикле, т.к идет постоянная привязка к одному и тому же времени. Выноси за цикл.
3. Проблема твоя в том, что ты указываешь статический массив по дефолту. Такое не допустимо при создании объекта. Выделяй память динамически в конструкторе(да и не забудь написать копир конструктора):
PHP код:
#include <stdlib.h>
#include <iostream>
#include <iomanip>
#include <time.h>
using namespace std;
class Koloda
{
private:
int count;
int ** cards;
public:
Koloda(int c){count=c;}
Koloda()
{
count=36;
int ** cards = new int*[2]; //двумерный массив
for(int i = 0; i < 2; i++)
{
cards[i] = new int[2];
for(int j = 0; j < 2; j++)
{
cards[i][j] = 0;
}
}
cards[0][0] = 6;
cards[0][1] = 7;
cards[1][0] = 1;
cards[1][1] = 2;
}
~Koloda()
{
for(int i = 0; i < 2; i++)
{
delete cards[i];
}
delete cards;
}
void Take_card(){
int i;
int j;
srand(time(NULL));
do {
i = rand()%9;
j = rand()%4;
}
while(cards[i][j]!=0);
cards[i][j]=0;
if(count>0){count--;}
else{
cout << "Карт больше нет";
}
}
};
Herflrish, а почему нет?! Только не забудь удалять указатели...
Последний раз редактировалось ChaaK; 30.01.2009 в 00:18..
|
|
|

30.01.2009, 00:08
|
|
Новичок
Регистрация: 23.07.2008
Сообщений: 28
Провел на форуме: 104504
Репутация:
1
|
|
Благодарю) убрал только у конструктора тип и всё скомпилировалось) Спасиба огромное)
|
|
|

30.01.2009, 00:36
|
|
Участник форума
Регистрация: 07.01.2009
Сообщений: 237
Провел на форуме: 745649
Репутация:
97
|
|
Сообщение от ChaaK
Herflrish, а почему нет?! Только не забудь удалять указатели...
Потому что по окончании работы функции область памяти, на которую ссылается указатель, никем ведь уже не контролируется по-моему. Вроде бы именно в этом случае в режиме Debug всё работает, а в Release - нет.
|
|
|

30.01.2009, 00:46
|
|
Познавший АНТИЧАТ
Регистрация: 01.06.2008
Сообщений: 1,047
Провел на форуме: 5321514
Репутация:
3313
|
|
Ты же ссылку возвращаешь, что тебе мешает удалить снаружи?
как вариант объяви как статик
|
|
|

30.01.2009, 20:41
|
|
Участник форума
Регистрация: 25.08.2008
Сообщений: 187
Провел на форуме: 2066562
Репутация:
86
|
|
Пишу код на с++ в некоторых местах нужно конвертировать int в string,вот собственно и вопрос как это сделать?
Нашел в инете конвертер int в string но он странным образом не работает,точнее компилятор пишет ошибку
Код:
error C2228: left of '.str' must have class/struct/union
warning C4552: '>>' : operator has no effect; expected operator with side-effect
сам код
Код:
std::ostringstream stm;
// Output an int
stm << 2500;
// Retrieve the resulting string
std::cout << stm.str() ;
return 0;
вот откуда брал код
int to string
Последний раз редактировалось rudvil; 30.01.2009 в 20:43..
|
|
|

30.01.2009, 21:21
|
|
Постоянный
Регистрация: 05.05.2006
Сообщений: 743
Провел на форуме: 2982851
Репутация:
107
|
|
Сообщение от rudvil
Пишу код на с++ в некоторых местах нужно конвертировать int в string,вот собственно и вопрос как это сделать?
Нашел в инете конвертер int в string но он странным образом не работает,точнее компилятор пишет ошибку
Код:
error C2228: left of '.str' must have class/struct/union
warning C4552: '>>' : operator has no effect; expected operator with side-effect
сам код
Код:
std::ostringstream stm;
// Output an int
stm << 2500;
// Retrieve the resulting string
std::cout << stm.str() ;
return 0;
вот откуда брал код
int to string
Если работаешь в борландской IDE то AnsiString(число)Есть ещё стандартные Ecvt,Fcvt,Gcvt
|
|
|
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|