Очень трудно сказать, так как ваш пост очень разрознен.
Сообщение об ошибке звучит так же, как и при попытке нарушить константность.
Например,
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 - поэтому компилятор выдаст ошибку.
Может быть сложным.
Так что я думаю, что у вас есть проблема с константностью.Это может быть простым или сложным.Если вы можете опубликовать полный код, который показывает ту же проблему, вам будет легче помочь.