【问题标题】: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之前

标签: c++ pointers memory-management


【解决方案1】:

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

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

class B
{
    B();
};

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

可以看到这个无误码here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-05
    • 1970-01-01
    • 2017-03-17
    • 2021-05-27
    • 1970-01-01
    • 2012-01-24
    • 1970-01-01
    相关资源
    最近更新 更多