通过引用C ++编译错误

时间:2014-04-11 23:37:31

标签: c++

您好我正在尝试通过函数解析一个类。我需要它只读,我不需要编辑它。所以为了做到这一点,我使用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;创建指向成员的指针

2 个答案:

答案 0 :(得分:2)

要在const对象上调用方法,它自己需要的方法是const。改变行

void print();

为:

void print() const;

它会起作用。
这实质上意味着在print()this指针是const,这样print()就不能改变对象,维持它的常量。

答案 1 :(得分:1)

你不能在const引用上调用非const函数 将其更改为

void print() const;