我想const声明接收的this指针作为参数。
static void Class::func(const OtherClass *otherClass)
{
// use otherClass pointer to read, but not write to it.
}
它被称为:
void OtherClass::func()
{
Class::func(this);
}
如果我没有const声明OtherClass指针,这不会编译nad,我可以改变它。
感谢。
答案 0 :(得分:2)
您不能像这样定义静态类成员函数:
static void Class::func(const OtherClass *otherClass)
{
// use otherClass pointer to read, but not write to it.
}
该函数必须在类声明中声明为static,然后函数定义如下:
void Class::func(const OtherClass *otherClass)
{
// use otherClass pointer to read, but not write to it.
}
答案 1 :(得分:1)
如果你不改变指针或指向的对象,为什么不改为使用const引用?
void Class::func(const OtherClass& otherClass)
{
// use otherClass ref for read-only use of OtherClass
}
void OtherClass::func()
{
Class::func(*this);
}
答案 2 :(得分:0)
这在我的机器上编译很好:
#include <iostream>
class bar;
class foo {
public:
static void f(const bar* b) { std::cout << b << '\n'; }
};
class bar {
public:
void f() {foo::f(this);}
};
int main(void)
{
bar b;
b.f();
return 0;
}
那你有什么不同的做法?
答案 3 :(得分:0)
在处理const和指针时,诀窍是从右向左阅读。查看http://www.parashift.com/c++-faq-lite/const-correctness.html以获得更好的概述。