@recker

Как сделать класс, объекты которого будут размещаться только в динамической памяти?

Как сделать класс, объекты которого будут размещаться только в динамической памяти?
  • Вопрос задан
  • 184 просмотра
Решения вопроса 1
devalone
@devalone
̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻
Ну, можно сделать что-то такое:
#include <iostream>
using namespace std;

class StrangeClass
{
public:
	StrangeClass(const StrangeClass& other) = delete;
	StrangeClass(const StrangeClass&& other) = delete;
	StrangeClass& operator =(const StrangeClass& other) = delete;
	StrangeClass& operator =(const StrangeClass&& other) = delete;
	
	static StrangeClass* getNewInstance()
	{
		return new StrangeClass;
	}
private:
	StrangeClass()
	{
		// do something
	}
};

int main() {
	// StrangeClass c1; // it isn't compiled
	// StrangeClass *c2 = new StrangeClass; // it also isn't compiled
	StrangeClass *c3 = StrangeClass::getNewInstance();
	delete c3;
	return 0;
}

Только зачем?
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Onito
сделать все поля класса указателями не?
а вообще делаешь объявление класса:
class SomeClass {
int a;
int b;
};

потом:
char* memoryPool = new char[8];
memset(memoryPool, 8, 0);
SomeClass* someClass = (SomeClass*)memoryPool;

усё тут будет в куче
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы