2013-03-15 72 views
0

我工作了一段时间后再次用C++,我怀疑发送指针作为函数中的参数。发送指针作为常量的指针问题

我想发送一个对象指针到一个函数,但有一个const状态,知道指针指向的对象不会随时被修改。所以我这样做:

int hi(const SomeObject* so) 
{ 
    so->SayHi(); 
} 

SomeObject* so = new SomeObject(); 
hi(so); 

但它没有奏效。它说不兼容的类型...

此外,如果我将const添加到函数,它会不同吗?像:

int hi(const SomeObject* so) const; 

任何人都可以解释我这个疑问吗?谢谢

+1

如何你在打电话吗?你通过了什么?什么是完整的错误? – 2013-03-15 12:04:58

+0

“它说兼容类型”?这听起来不像是编译器错误。也许你应该向我们展示你的* actual *代码,以及你得到的* actual *错误。 :) – jalf 2013-03-15 12:05:31

+1

请修改您的问题以包含完整的错误,并显示_how_您正在调用它,以及如何声明您在调用中使用的变量。 – 2013-03-15 12:05:52

回答

3
int hi(const SomeObject* so) 

您声明SomeObject是不变的。如果sayHi没有声明为const,这会导致编译器错误。

class SomeObject { 
    void sayHi(void) const; 
} 

如果你的目的是为了使指针常数(不是它指向的对象),它应该是这样的:

int hi(SomeObject* const so) 

Here你可以看到指针和常量指针