C++ C++;将指针值复制到指针数组
我的代码有问题 我有一个抽象类对象和4个从该对象继承的其他类。 然后我有一些类似于集合类的东西,它将对象存储在指针数组中。我在创建这样的数组时遇到问题,但我发现:C++ C++;将指针值复制到指针数组,c++,pointers,constants,abstract,C++,Pointers,Constants,Abstract,我的代码有问题 我有一个抽象类对象和4个从该对象继承的其他类。 然后我有一些类似于集合类的东西,它将对象存储在指针数组中。我在创建这样的数组时遇到问题,但我发现: Object** array = new Object*[count]; 这解决了我的问题 “我的收藏”中的方法存在如下问题: class Collection { public: void addObjectToArray(const Object* const obj) private: Object **array
Object** array = new Object*[count];
这解决了我的问题
“我的收藏”中的方法存在如下问题:
class Collection
{
public:
void addObjectToArray(const Object* const obj)
private:
Object **array;
size_t size, capacity
}
然后问题来了。主要来说,我可以这样做:假设继承的类中有一个是Ball
Object* ball = new Ball();
这很好,但如果我在集合中调用addObjectToArray方法,它就会崩溃。以下是方法的主体:
void addObjectToArray(const Object* const obj)
{
if (size < capacity)
{
*array[size] = *obj; <<<----- problem
++size;
}
else
{
throw std::out_of_range("No more space for objects");
}
}
void addObjectToArray(常量对象*常量对象)
{
if(尺寸<容量)
{
*array[size]=*obj;*array[size]=*obj;
应该是array[size]=obj;
为什么不使用std::vector?我知道,但obj是const Object*const obj-->,不允许我分配给数组。假设数组是必需的,如果这是您的解决方案,不妨使用std::vector
。
array[size] = const_cast<Object*>(obj)