您好我正在尝试通过函数解析一个类。我需要它只读,我不需要编辑它。所以为了做到这一点,我使用const参数通过引用传递对象。但我无法理解我做错了什么。
void Container::push_Object(const Module& input){
cout << "Pushing object" << endl;
input.print();
......
}
班级解除和打印功能:
class Module{
private:
short number;
string* args;
string pname;
bool _isFact;
public:
Module(string, bool, short, string);
string* get_Items(){ return args; }
string get_name(){ return pname; }
bool isFact(){ return _isFact; }
void print();
};
void Module::print(){
cout << pname << "(";
for (int i = 0; i < number; i++){
cout << args[i] ;
if (i != number - 1) cout << ',';
}
cout << ")" << endl;
}
我在VS 2013工作,这是我得到的错误
错误15错误C3867:&#39; Module :: print&#39;:函数调用缺少参数 列表;使用&#39;&amp; Module :: print&#39;创建指向成员的指针
答案 0 :(得分:2)
要在const对象上调用方法,它自己需要的方法是const。改变行
void print();
为:
void print() const;
它会起作用。
这实质上意味着在print()
内this
指针是const,这样print()
就不能改变对象,维持它的常量。
答案 1 :(得分:1)
你不能在const引用上调用非const函数 将其更改为
void print() const;