如何const声明将此指针作为参数发送

时间:2010-06-15 08:17:32

标签: c++ pointers const this

我想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,我可以改变它。

感谢。

4 个答案:

答案 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以获得更好的概述。