menggunakan operator << kelebihan beban di << beban berlebih di kelas yang berbeda
Dec 05 2020
Jadi, inilah masalahnya. Saya memiliki kelas B di mana saya telah membebani operator << dan kelas A di mana operator << juga kelebihan beban. Namun, << overload di kelas B tampaknya tidak bekerja di << overload di kelas A. Ini hanya mengembalikan alamat b seolah-olah << overload di kelas B tidak ada.
Bantuan apapun akan sangat dihargai
#pragma once
#include <ostream>
using namespace std;
class B {
public:
B(int x) {
this->x = x;
}
friend ostream& operator<<(ostream& os, B& b)
{
os << "this is B " << b.x;
return os;
}
private:
int x;
};
#pragma once
#include <ostream>
#include "B.h"
using namespace std;
class A {
public:
A(B* b) {
this->b = b;
this->x = 0;
}
friend ostream& operator<<(ostream& os, A& a)
{
os << a.b << endl; //this doesnt work <============
os << "this is a " << a.x;
return os;
}
private:
int x;
B* b;
};
#include <iostream>
#include "A.h"
#include "B.h"
using namespace std;
int main()
{
B* b = new B(1);
A* a = new A(b);
cout << *a << "inside a "<< endl;
cout << *b << "inside b " <<endl;
}
Jawaban
5 SamVarshavchik Dec 05 2020 at 10:37
os << a.b // ...
a.b
bukan a B
, yang Anda tentukan sebagai kelebihan beban, lihat lebih dekat kode Anda:
class A {
private:
B* b;
};
Itu a B *
, dan bukan a B
, dan tidak ada kelebihan beban untuk itu.
Jika Anda ingin memanggil kelebihan beban di sini, gunakan os << (*a.b) // ...
;
Kiat Pemilik Anjing yang Bermanfaat: Mengapa Penting untuk Membiarkan Anjing Anda Mengendus di Jalan