Ошибка: 'CPtrList :: AddTail': 2 перегрузки не имеют законного преобразования для указателя 'this' - PullRequest
0 голосов
/ 24 марта 2011

Как это побороть?

Вот мой код

Вот мой код

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 Ответ

2 голосов
/ 24 марта 2011

Очень трудно сказать, так как ваш пост очень разрознен.

Сообщение об ошибке звучит так же, как и при попытке нарушить константность.

Например,

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.

У вас есть много вариантов этого.Например,

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 объектах.Но даже если вы вызываете его неконстантным объектом, это гарантирует, что объект не изменится.Но F :: g () вызывает D :: e () для локального объекта m_d.D: e () не является константной функцией, поэтому компилятор не знает, изменит ли он m_d - поэтому компилятор выдаст ошибку.

Может быть сложным.

Так что я думаю, что у вас есть проблема с константностью.Это может быть простым или сложным.Если вы можете опубликовать полный код, который показывает ту же проблему, вам будет легче помочь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...