当我参考 std::ostream 进行编译时,会弹出一个奇怪的错误
I have a weird error that pops up when I compile referring to std::ostream
这个错误对我来说毫无意义,我以前做过这样的事情,然后一直跟着它到发球台,但现在它突然出现了。
#ifndef MATRICA_HPP_INCLUDED
#define MATRICA_HPP_INCLUDED
#include <iostream>
#include <cstdio>
#define MAX_POLJA 6
using namespace std;
class Matrica {
private:
short int **mtr;
short int **ivicaX;
short int **ivicaY;
int lenX, lenY;
public:
Matrica(short int, short int);
~Matrica();
int initiate_edge(const char *, const char *);
short int get_vrednost (short int, short int) const;
short int operator = (const short int);
int check_if_fit(int *);
friend ostream& operator << (ostream&, const Matrica&) const; // HAPPENS HERE <====
};
#endif // MATRICA_HPP_INCLUDED
这是错误:
error: non-member function 'std::ostream& operator<<(std::ostream&, const Matrica&)' cannot have cv-qualifier|
friend ostream& operator << (ostream&, const Matrica&) const;
您将 ostream& operator << (ostream&, const Matrica&)
声明为 friend
,这使其成为 自由函数 ,而不是 成员函数 .自由函数没有 this
指针,它受到函数声明末尾 const
修饰符的影响。这意味着如果你有一个自由函数,你不能使它成为一个 const
函数,因为没有 this
指针受到它的影响。像这样简单地删除它:
friend ostream& operator << (ostream&, const Matrica&);
你准备好了。
这个错误对我来说毫无意义,我以前做过这样的事情,然后一直跟着它到发球台,但现在它突然出现了。
#ifndef MATRICA_HPP_INCLUDED
#define MATRICA_HPP_INCLUDED
#include <iostream>
#include <cstdio>
#define MAX_POLJA 6
using namespace std;
class Matrica {
private:
short int **mtr;
short int **ivicaX;
short int **ivicaY;
int lenX, lenY;
public:
Matrica(short int, short int);
~Matrica();
int initiate_edge(const char *, const char *);
short int get_vrednost (short int, short int) const;
short int operator = (const short int);
int check_if_fit(int *);
friend ostream& operator << (ostream&, const Matrica&) const; // HAPPENS HERE <====
};
#endif // MATRICA_HPP_INCLUDED
这是错误:
error: non-member function 'std::ostream& operator<<(std::ostream&, const Matrica&)' cannot have cv-qualifier|
friend ostream& operator << (ostream&, const Matrica&) const;
您将 ostream& operator << (ostream&, const Matrica&)
声明为 friend
,这使其成为 自由函数 ,而不是 成员函数 .自由函数没有 this
指针,它受到函数声明末尾 const
修饰符的影响。这意味着如果你有一个自由函数,你不能使它成为一个 const
函数,因为没有 this
指针受到它的影响。像这样简单地删除它:
friend ostream& operator << (ostream&, const Matrica&);
你准备好了。