2017-11-14 16 views
2

エラーは私には意味がない、私はこれまでのようなことをやってきたし、ティーに従ったが、今すぐポップアップする。私は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|

+4

あなたの 'friend'演算子の最後の' const'を削除します。 'friend'はメンバ関数ではなく、フリー関数なので、' this'ポインタを持たないので、 'this'を' const'にする必要はありません。私の答えを参照してください – Fureeish

+2

@ Fureeishは答えが必要です。 –

答えて

6
friend ostream& operator << (ostream&, const Matrica&) const; 

あなたはそれフリー機能、ないメンバ関数作るおり、friendとしてostream& operator << (ostream&, const Matrica&)を宣言する。空き関数には、const修飾子の影響を関数宣言の末尾に持つthisポインターがありません。つまり、無料の機能を持っている場合は、constの機能にすることはできません。これは、影響を受けるポインタthisがないためです。次のように削除してください:

friend ostream& operator << (ostream&, const Matrica&); 

これで準備は整いました。

+0

それは、ありがとう:) – Fish

関連する問題