通过将指针作为参数传递来删除对象

Posted

技术标签:

【中文标题】通过将指针作为参数传递来删除对象【英文标题】:Deleting an object by passing its pointer as a parameter 【发布时间】:2017-04-24 09:48:06 【问题描述】:

我有两个班级:

在我的 .h 文件中:

class A

    A();

 private:
 vector<B*> list;

 void deleteObject(B* i);

 


class B

  B();

在我的 .cpp 文件中:

void A::deleteObject(B* i)

    delete i;

但是,Visual Studio 用红色下划线 deleteObject 并表示它与头文件中的声明不兼容

任何帮助将不胜感激

【问题讨论】:

“但是,这是不对的,我不知道为什么” - 我们也不是,因为你没有告诉我们你想要完成的所有这个 我什至没有运行程序,但是我的Visual Studio用红色下划线告诉我声明与.h文件中的声明不兼容 可能是因为当您定义 class A 时,它不知道您的 vector&lt;B*&gt; 声明中的 B 是什么。 @Rogus 那么你建议如何解决这个问题?通过在 A 类中创建 B 类型的对象? class B的定义移到class A之前 【参考方案1】:

您需要在课程末尾添加;(在 之后)

另外,如果两个类在同一个文件中,则必须将B类放在A类之上

class B

    B();
;

class A

     A();    
     private:
         vector<B*> list;    
         void deleteObject(B* i);    
;    

可以看到这个无误码here

【讨论】:

以上是关于通过将指针作为参数传递来删除对象的主要内容,如果未能解决你的问题,请参考以下文章

是否传递指针参数,在 C++ 中按值传递?

如何将子类作为期望基类的函数的参数传递,然后将该对象传递给指向这些抽象类对象的指针向量?

首先通过将类型作为参数传递来动态实例化实体框架数据库中的模型对象

使用 std::thread 函数 C++11 将指针作为参数传递

将指向常量的指针作为参数传递时出现问题

没有指针,我可以在 Python 中将引用作为参数传递吗? [复制]