C++ Can';t指定一个成员,该成员是指向模板化类的指针
我的问题是,在我的“Widget”类中,我有以下声明:C++ Can';t指定一个成员,该成员是指向模板化类的指针,c++,object,templates,constants,C++,Object,Templates,Constants,我的问题是,在我的“Widget”类中,我有以下声明: MouseEvent* X; 在成员函数中,我以正常方式使用地址初始化指针: X = new MouseEvent; 好的,最后一行使编译器在以下位置停止: 错误C2166:l值指定常量对象 好的,MouseEvent被声明为typedef以简化事情: typedef Event__2<void, Widget&, const MouseEventArgs&> MouseEvent; typedef事件\u
MouseEvent* X;
在成员函数中,我以正常方式使用地址初始化指针:
X = new MouseEvent;
好的,最后一行使编译器在以下位置停止:
错误C2166:l值指定常量对象
好的,MouseEvent被声明为typedef以简化事情:
typedef Event__2<void, Widget&, const MouseEventArgs&> MouseEvent;
typedef事件\uuuu 2 MouseEvent;
事件2,正如你们所想象的:(所示的基本结构):
模板
班级活动2
{
...
};
我不知道Event__2类从哪里获得常量限定符。有什么建议吗
谢谢。很可能,初始化X的成员函数被标记为const,类似这样
class Foo
{
int *Bar;
public:
void AssignAndDoStuff() const
{
Bar = new int; // Can't assign to a const object.
// other code
}
}
这里的解决办法是
class Foo
{
mutable int *Bar; // 3
public:
void Assign() // 1
{
Bar = new int;
}
void DoStuff() const
{
// Other code
}
void AssignAndDoStuff() // 2
{
Bar = new int;
// other code
}
}
class Foo
{
mutable int *Bar; // 3
public:
void Assign() // 1
{
Bar = new int;
}
void DoStuff() const
{
// Other code
}
void AssignAndDoStuff() // 2
{
Bar = new int;
// other code
}
}