오류가 저에게 의미가 없으며, 이전에 이와 같은 작업을 수행했지만 티를 따라갔습니다. 당신은 그것을 무료 기능 아닌 멤버 함수을 만드는, friend
로 ostream& operator << (ostream&, const Matrica&)
를 선언 error: non-member function 'std::ostream& operator<<(std::ostream&, const Matrica&)' cannot have cv-qualifier|
std :: ostream을 참조하여 컴파일 할 때 갑자기 이상한 오류가 발생합니다.
2
A
답변
6
friend ostream& operator << (ostream&, const Matrica&) const;
:
#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
이
는 오류입니다. 무료 함수는 함수 선언 끝에const
수정 자의 영향을받는
this
포인터가 없습니다. 즉, 자유 함수가있는 경우
const
함수가 될 수 없으므로이 함수는 영향을받을 포인터가
this
이므로 의미가 없습니다. 다음과 같이 간단히 삭제하십시오.
friend ostream& operator << (ostream&, const Matrica&);
이제 준비가 완료되었습니다.
+0
그게, 고마워 :) – Fish
'friend' 연산자에서 마지막으로'const'를 삭제하십시오. '친구 '는 멤버 함수가 아닌 자유 함수이므로'this' 포인터가 없으므로'this'를'const'로 만들 필요가 없습니다. 내 대답을 참조하십시오 – Fureeish
@ Fureeish 그 대답해야합니다. –