"Признаю свою вину, меру, степень, глубину"(С)
Но тянуться в личку было лень.
NTFS писал(а):обобщенный метод с созданием обобщенного объекта?
#ifndef _QUEUE_H_
#define _QUEUE_H_
template <typename Type>
class CQueue
{
private:
struct Node { Type sItem; struct Node* sNext; };
enum { EQueueSize = 1000 };
Node* iFront;
Node* iRear;
int iSize;
const int iMaxSize;
public:
CQueue(int aSize = EQueueSize);
~CQueue();
inline bool IsEmpty() const { return iSize == 0; };
inline bool IsFull() const { return iSize == iMaxSize; };
inline int Size() const { return iSize; };
bool Enqueue(const Type& aItem);
bool InsertAt(const Type& aItem, int aPosition);
Type Dequeue();
Type ItemAt(int aPosition);
};
template <typename Type>
CQueue<Type>::CQueue(int aSize):
iFront(NULL),
iRear(NULL),
iSize(0),
iMaxSize(aSize)
{
}
template <typename Type>
CQueue<Type>::~CQueue()
{
Node* currentNode;
while (iFront)
{
currentNode = iFront;
iFront = iFront->sNext;
delete currentNode;
}
}
template <typename Type>
bool CQueue<Type>::Enqueue(const Type& aItem)
{
return InsertAt(aItem, iSize);
}
template <typename Type>
bool CQueue<Type>::InsertAt(const Type& aItem, int aPosition)
{
if ((aPosition < 0) || (iSize == iMaxSize))
return FALSE;
Node* newNode = new Node;
if (!newNode)
return FALSE;
newNode->sItem = aItem;
if (!iSize)
{
newNode->sNext = NULL;
iFront = newNode;
iRear = newNode;
}
else
{
if (aPosition == 0)
{
newNode->sNext = iFront;
iFront = newNode;
}
else if (aPosition >= iSize)
{
newNode->sNext = NULL;
iRear->sNext = newNode;
iRear = newNode;
}
else
{
Node* currentNode = iFront;
for (int i = 1; i < aPosition; i++)
currentNode = currentNode->sNext;
newNode->sNext = currentNode->sNext;
currentNode->sNext = newNode;
}
}
iSize++;
return TRUE;
}
template <typename Type>
Type CQueue<Type>::Dequeue()
{
if (!iSize)
return NULL;
Type item = iFront->sItem;
Node* currentNode = iFront;
iFront = iFront->sNext;
delete currentNode;
iSize--;
if (!iSize)
iRear = NULL;
return item;
}
template <typename Type>
Type CQueue<Type>::ItemAt(int aPosition)
{
if ((aPosition < 0) || (aPosition >= iSize))
return NULL;
if (aPosition == iSize - 1)
return iRear->sItem;
Node* currentNode = iFront;
for (int i = 0; i < aPosition; i++)
currentNode = currentNode->sNext;
return currentNode->sItem;
}
#endif
Thunderstorm писал(а): но однажды делал самописную очередь для свиборгов на телефон:
template <typename Type>
Type* createObj(String log)
{
Console.WriteLine(log);
return new Type();
}
Thunderstorm писал(а):(но такой изврат я забыл после зачёта
Filael писал(а):так грустно... такое чувство будто я один совершенно один и никому не нужен. даже на том свете меня никто бы не пришел с цветами встречать...
Filael писал(а):так грустно... такое чувство будто я один совершенно один и никому не нужен.
NTFS писал(а):Оно скорее всего не в хроме, а в системе.
Антивирус стоит?
Thunderstorm писал(а):А вот может и в хроме (хотя обычно такое г в эксплорер ставится).
Стандартно, "проверьте, воспроизводится ли в другом браузере, переустановите хром пришлите скриншот ошибки и поснифайте трафик"
Tammy писал(а):У меня в браузере (хром) завелась какая-то [таинственная вещь] в виде постоянно всплывающей рекламы и периодическим киданием на какие-то сайты с казино. Я хоть и ламер, но вроде бы ничего подозрительного не качал и по ссылкам подозрительным не ходил. Посоветуйте, что делать.
Tammy писал(а):У меня в браузере (хром) завелась какая-то [таинственная вещь] в виде постоянно всплывающей рекламы и периодическим киданием на какие-то сайты с казино.
ChainRainbow писал(а):И поставь уже себе Огнелиса ))
Tammy писал(а):Мда, всё оказалось слишком просто.
NTFS писал(а):Он возвращает уже существующий объект. А мне нужно, чтобы вызывался new Type()
Tammy писал(а):У меня в браузере (хром) завелась какая-то [таинственная вещь] в виде постоянно всплывающей рекламы и периодическим киданием на какие-то сайты с казино. Я хоть и ламер, но вроде бы ничего подозрительного не качал и по ссылкам подозрительным не ходил. Посоветуйте, что делать.
Thunderstorm писал(а):NTFS писал(а):Он возвращает уже существующий объект. А мне нужно, чтобы вызывался new Type()
Не вижу, почему бы благородному дону Методу не создать внутри себя новый объект.
Или конпелятор видит?
ChainRainbow писал(а):Ошибка №1 - Хром вместо браузера ))
ChainRainbow писал(а):Ошибка №1 - Хром вместо браузера ))
ChainRainbow писал(а):И поставь уже себе Огнелиса ))
NTFS писал(а):"Имя, сестра, имя!"(С)ChainRainbow писал(а):Ошибка №1 - Хром вместо браузера ))
Что использовать-то? Ну ладно, я сижу на Firefox, потому что там есть необходимые мне в работе дополнения - но они нужны очень узкому кругу, страшно далекому от народа.
Остаётся Опера (коммерческий), ИЕ (ужасен) и Сафари (на Windows ужасен,а Мак для мажоров). Про всякие Яндекс-броузеры не будем к ночи.
GARRI писал(а):ИЕ нужен под прошивальшики железа
GARRI писал(а):Сафари...а так ли он шикарен на Маке?..))
GARRI писал(а):Так что только Фаерфокс, для основной массы задач.
#include <stdio.h>
#include <conio.h>
class CPoint
{
private:
int iX;
int iY;
public:
CPoint(int aX = 0, int aY = 0):
iX(aX),
iY(aY)
{
}
~CPoint()
{
}
void Set(int aX, int aY)
{
iX = aX;
iY = aY;
}
void Print()
{
printf("X: %d, Y: %d\r\n", iX, iY);
}
CPoint operator++(int)
{
CPoint oldPoint(iX, iY);
iX++;
iY++;
return oldPoint;
}
};
template <typename Type> Type* createObj(char* str)
{
Type* ptr = new Type();
printf("%s %x\r\n", str, ptr);
return ptr;
}
int main()
{
int* i = createObj<int>("New int created. Address: ");
float* f = createObj<float>("New float created. Address: ");
double* d = createObj<double>("New double created. Address: ");
char* c = createObj<char>("New char created. Address: ");
CPoint* p = createObj<CPoint>("New CPoint created. Address: ");
p->Set(15, 20);
printf("\r\n");
*i = 1;
*f = 2;
*d = 3;
*c = 'a';
(*i)++; (*f)++; (*d)++; (*c)++; (*p)++;
printf("i: %d\r\n", *i);
printf("f: %f\r\n", *f);
printf("d: %f\r\n", *d);
printf("c: %c\r\n", *c);
p->Print();
getch();
return 0;
}
Thunderstorm писал(а):в шестой студии
Симбиан поддерживал только шестую, а больше она мне ни за чем и не нужна была.NTFS писал(а):Зачем?
Thunderstorm писал(а):Вообще, я бы шаблоны кроме как для контейнеров (очередь там, стек) не применял.
Thunderstorm писал(а):Симбиан
NTFS писал(а):использовать массив потомков как массив предков
NTFS писал(а):Что использовать-то? Ну ладно, я сижу на Firefox
NTFS писал(а):Остаётся Опера (коммерческий), ИЕ (ужасен) и Сафари (на Windows ужасен,а Мак для мажоров). Про всякие Яндекс-броузеры не будем к ночи.
GARRI писал(а):С какой версии пользуешься? )
Thunderstorm писал(а):Преобразовать указатели на единорогов/пегасов/земнопони к указателям на void, сложить в массив указателей на void.
Thunderstorm писал(а):Это возможно. Делается как раз через преобразования - кажется, даже неявные - и как-то несложно, в книжке точно такой же пример был. Дома посмотрю.
Creature** publicHouseVisitors = new Creature* [2];
publicHouseVisitors[0] = new Pony();
publicHouseVisitors[1] = new Dragon();
publicHouseVisitors[0]->clop();
publicHouseVisitors[1]->clop();
publicHouseVisitors[0]->yiff(publicHouseVisitors[1]);
publicHouseVisitors[1]->yiff(publicHouseVisitors[0]);
NTFS писал(а):И под криптосистемы
NTFS писал(а):(автоопределение)Память у него сильно течет, но я просто взял за правило раз в 3-4 часа перезапускать броузер и это помогает.
Filael писал(а):так грустно... такое чувство будто я один совершенно один и никому не нужен. даже на том свете меня никто бы не пришел с цветами встречать...
NTFS писал(а):Что использовать-то? Ну ладно, я сижу на Firefox, потому что там есть необходимые мне в работе дополнения - но они нужны очень узкому кругу, страшно далекому от народа.
Остаётся Опера (коммерческий), ИЕ (ужасен) и Сафари (на Windows ужасен,а Мак для мажоров). Про всякие Яндекс-броузеры не будем к ночи.
Thunderstorm писал(а):Вооо, вот оно, виртуальные методы!
Объявляешь doSome() виртуальным, и вне зависимости от типа указателя он сделает то, чем фактически является obj.
Tammy писал(а):Filael писал(а):так грустно... такое чувство будто я один совершенно один и никому не нужен. даже на том свете меня никто бы не пришел с цветами встречать...
Нужно взращивать свой внутренний свет.
NTFS писал(а):
- Код: Выделить всё
class Pony {
public:
void clop() {
}
} ;
class Pony {
public:
virtual void clop() {
}
} ;
сапсанка писал(а):Добро пожаловать в мир интроверта!