0
你好,我目前面臨的一個問題是,我想從2個獨立的類輸出數據,一個是基類,一個是派生類,我想超載運算符輸出<輸出在一次,但所有的數據似乎都無法做到的,我有這樣的事情:當數據拼接時輸出成員變量C++
#include <iostream>
using namespace std;
class A
{
char* A;
char* B;
public:
A() {A = ' '; B = ' ';}
A(char* pLast, char* pFirst)
{
A = new char [strlen(pLast) + 1];
B = new char [strlen(pFirst) + 1];
strcpy(A,pLast);
strcpy(B,pFirst);
};
}
class C:public A
{
int X;
char Y;
int Z;
public:
C(char* A, char* B, int X, char Y, int Z)
:A(A,B)
{
//do stuff here
}
friend std::ostream& operator<<(std::ostream& out, const C& outPut)
{
out << outPut.A << "," << outPut.B << "," <<outPut.X<< "," << outPut.Y << "," << outPut.Z << endl;
return out;
}
};
當我嘗試運行此它告訴我,A和B是超出範圍這是有道理的,因爲這些成員都是私有在A班,我不知道如何解決這個問題。我試圖創建getter方法來訪問A和B,但數據是空白的。我甚至嘗試添加類A的對象作爲類B的成員以嘗試訪問B類中的成員,但數據仍然是空白的。我如何解決這個問題?
爲什麼你用已經在類中使用過的名稱命名成員? – imreal
與問題沒有直接關係,但是現在看來,'B'是'A'的嵌套類(除了從'A'派生出來之外)。你想這樣嗎? – jogojapan
除了Nick所說的外,'A'的構造函數還有一個問題。您根據成員「A」的當前大小分配空間,而不是根據「pLast」和「pFirst」的大小來分配空間。 – jogojapan