错误:'CPtrList :: AddTail':2个重载没有'this'指针的合法转换

时间:2011-03-24 05:16:37

标签: c++ mfc visual-c++

如何克服这个问题?

这是我的代码

这是我的代码

ObjectList.h

#pragma once
#include "LogData.h"
 typedef  CTypedPtrArray<CPtrList , CLog *> CLogData;
 class CObjectList
 {
   public:

 CLogData m_logData;
   public:
 CObjectList();
CLogData GetLog();
  };

ObjectList.cpp

 #include "stdafx.h"
 #include "LogData.h"

 CObjectList::CObjectList()
  {
  }

  CLogData CObjectList::GetLog()
 {
   return m_logData;
  }

访问其他文件中的内容时显示错误:

       CObjectList* threadinfo;
    threadinfo = (CObjectList*)ptr;
       threadinfo->GetLog().AddTail(log);

此致

KARTHIK

1 个答案:

答案 0 :(得分:2)

很难说,因为你的帖子非常脱节。

错误消息听起来像是在您尝试违反常量时获得的错误消息。

e.g。

class C
{
public:
    void a();
    void b() const;
};

void func()
{
    C c0;
    c0.a();  //  OK
    c0.b();  //  OK

    const C c1;
    c1.a();  // violates const-ness : compiler error
    c0.b();  // this is OK as b() is a const function.
}

如果你有一个const对象,你只能调用const方法。

你会得到很多变化。 e.g。

class D
{
public:
    void e();
};

class F
{
public:
    void g() const
    { 
        m_d.e();  // This line is an error
    }
    D m_d;
};

void func()
{
    F f;
    f.g();
}

在上面,F :: g()是一个const函数。它可以在const对象上调用。但即使您使用非const对象调用它,也可以保证不更改对象。 但是F :: g()在本地对象m_d上调用D :: e()。 D:e()不是const函数,因此编译器不知道它是否会修改m_d - 因此编译器会给出错误。

它可能变得复杂。

所以我猜你有一个const-ness的问题。它可能是一个简单的,也可能是一个复杂的。如果您可以发布一些显示相同问题的完整代码,那么它将更容易为您提供帮助。