小问题--程序编译错误

时间:2008-05-09 11:18:19   来源:论坛整理  作者:  编辑:chinaitzhe
C/C code





Code highlighting produced by Actipro CodeHighlighter (freeware)

http://www.CodeHighlighter.com/





#include <iostream>

#include <vector>

#include <set>

#include <string>

#include <utility>

using namespace std;



typedef pair<short,short> location;

class Query

{

protected:

    set<short> *_vec2set(const vector<location> );



    static vector<string> *_text_file;



    set<short> *_solution;

    vector<location> _loc;

public:

    virtual void eval() = 0;

    void display()const;



    const set<short> *solution()const;

    const vector<location> *locations()const {return &_loc;}



    static const vector<string> *text_file(){return _text_file;}



};



inline const set<short>*

Query::solution()const

{

    return _solution ? _solution : _solution = _vec2set(&_loc);

}



int main()

{

    return 0;

}




网友回复:试图对一个const类型的类对象调用非const型的成员函数。
一般造成此问题的原因是,你的调用是在一个const型的成员函数中进行的。对于const型的成员函数,编译器会将其引用的任何成员变量标记为const类型——虽然你在类的声明中该成员变量可能不是,从而导致此错误。
假如是我说的情况,删掉调用函数的const说明即可。
网友回复:#include <iostream>
#include <vector>
#include <set>
#include <string>
#include <utility>
using namespace std;

typedef pair <short,short> location;
class Query
{
protected:
set <short> *_vec2set(const vector <location>* );

static vector <string> *_text_file;

set <short> *_solution;
vector <location> _loc;
public:
virtual void eval() = 0;
void display()const;

const set <short> *solution();
const vector <location> *locations()const {return &_loc;}

static const vector <string> *text_file(){return _text_file;}

};

inline const set <short>*
Query::solution()
{
return _solution ? _solution : _solution = _vec2set(&_loc);
}

int main()
{
return 0;
}

网友回复:
#include <iostream>
#include <vector>
#include <set>
#include <string>
#include <utility>
using namespace std;

typedef pair <short,short> location;
class Query
{
protected:
static set <short> *_vec2set(const vector <location> );

static vector <string> *_text_file;

static set <short> *_solution;
vector <location> _loc;
public:
virtual void eval() = 0;
void display()const;

const set <short> *solution()const;
const vector <location> *locations()const {return &_loc;}

static const vector <string> *text_file(){return _text_file;}

};

inline const set <short>*
Query::solution()const
{
return _solution ? _solution : (_solution = _vec2set(_loc));
}

int main()
{
return 0;
}
关键字:问题,程序,编译,错误,

文章评论

共有 0 位网友发表了评论 此处只显示部分留言 点击查看完整评论页面