c new у меня тоже компилируется.
Но я изначально пишу для MSP430 а там без new надо.
Разве я не могу там вызвать конструктор.
Вот более похожий на оригинал код:
Код
class A
{
public:
static A* Init(int i);
private:
A(int u);
static A* a[2];
};
A* A::a[2]={0};
A* A::Init(int i)
{
if (i<2 && i>0 && a[i]==0)
{
A(i); //если индекс объекта 0 или 1 и он еще не создан, то создаем
return a[i]; //в переменной static A* a[2]; лежат адреса созданных объектов
}
return (A*)0;
}
A::A(int u)
{
a[u]=this;
}
void main()
{
A* p=A::Init(0);
}
Смысл идеи в следующем - подсчитывать количество созданных объектов и если выше порога не создавать, чтоб нельзя было A t[100]; написать.
PS Класс описывает работу UART, а у меня их всего два. )) Можно конечно самому себе сказать - не создавай третий и больше, но.. вобщем тут даже скорее любопытство, почему нельзя вот так?
написал и сам задал себе вопрос а почему c new нельзя???
Кстати с new и в ИАРе заработало.
new - это ведь динамически выделяемая память в heap.
В чем будет разница по сравнению с обычным созданием объекта, а не через new и private конструктор?
Вообще применительно к embedded new нормально испоьзовать? Я вроде понимаю, что если динамически занимать и освобождать память то вроде Memory Management нужен, а если без delete, если только занимать?
Чето я подглюкиваю к вечеру