2011-10-28 138 views
-4

我有一个令人困惑的C++ const成员函数

上一页码的语法错误:

class A { 
public: 
    void process(const string& str) {}; 
}; 

我有

A a; 
a.process("abcd"); 

一切都很好 现在我改变进程成员函数来a const

void process(const string& str) const {}; 

现在 a.process("abcd");得到一个关于str是一个常量char [5]的编译错误...

const const添加如何影响语法错误。我认为只有const(在这种情况下)意味着成员变量不会改变?

有关这方面的想法?

+1

请发布可显示问题的compilable。如此一来,甚至很难猜测你所看到的,更不用说它是什么造成的。 –

+1

你正在做的事情与你在这里告诉的不同,const函数没有问题:http://ideone.com/0RXZl –

+0

你说你看到“编译错误”....请告诉我们* *编译器错误是什么,它指的是哪一行。 – abelenky

回答

2

const添加到方法声明的末尾不会改变str参数的语义。其他事情正在发生,或者编译器有一个错误。

0

它应该工作得很好。因此,您还做了一些影响结果的其他修改。

0

添加const修饰你的成员函数是指物体上您的呼叫你的函数可以是const:

const A a; 
a.process("abcd"); 

它没有任何与您的常量字符数组。