2016-08-16 3 views
-1

私の仕事は、クラス内にオブジェクトを作成し、それを初期化して出力することです(クラスへのポインタを使用して)。このコードは完全にコンパイルされますが、出力は表示されません。私は本当に助けていただきありがとうございます、事前に感謝!オブジェクトポインタが機能しない

#include <iostream> 
#include <string> 

using namespace std; 

class family 
{ 
public: 
    void setWife(string w) 
    {w = wife;}; 
    string getWife() 
    {return wife;}; 
    void setHusband(string h) 
    {husband = h;}; 
    string getHusband() 
    {return husband;}; 
    void setSon(string s) 
    {s = son;}; 
    string getSon() 
    {return son;}; 
    void setDaughter1(string d1) 
    {d1 = daughter1;}; 
    string getDaughter1() 
    {return daughter1;}; 
    void setDaughter2(string d2) 
    {daughter2 = d2;}; 
    string getDaughter2() 
    {return daughter2;}; 
    double* getPointer() 
    {return &pointer;}; 
    void initialize() 
    { 
     setWife("Shirley Collin"); 
     setHusband("Donald Collin"); 
     setSon("Collin Collin"); 
     setDaughter1("Harriet Collin"); 
     setDaughter2("Hillary Collin"); 
    } 
    friend void output(family* Collin); 


private: 
    string wife; 
    string husband; 
    string son; 
    string daughter1; 
    string daughter2; 
    double pointer; 
}; 


void output(family* Collin) 
{cout << "Husband is " <<Collin->getHusband()<< endl; 
    cout << "wife is " << Collin ->getWife() << endl; 
    cout << "son is " << Collin->getSon() << endl; 
    cout << "daughter1 is " << Collin->getDaughter1() << endl; 
    cout << "daughter2 is " << Collin->getDaughter2()<< endl; 
}; 

int main() 
{family Collin; 
    Collin.initialize(); 
    family *pointer = new family; 
    output (pointer); 
    cin.ignore(); 

} 
+0

;'。 – songyuanyao

+1

はるかに簡単なクラスから始めて、ポインタのものが完全に機能するようにしてから、他のものをすべて追加します。 – Beta

答えて

1
family Collin; 
Collin.initialize(); 

これはfamilyクラスのインスタンスを構築し、initialize()方法で定義された値で初期化します。

family *pointer = new family; 
output (pointer); 

これはfamilyクラスの第2のインスタンスを構築し、任意の方法でそれを初期化し、そしてoutput()メソッドを呼び出し、このfamilyクラスの完全に初期化されていない第二のインスタンスの内容を表示するためにありません。

これは、このプログラムが有用な出力を生成しない理由です。

あなたはおそらく、これらの4本のラインを交換したい:私はあなたが `出力(&コリン)をしたいと思います

family *pointer=new family; 
pointer->initialize(); 
output(pointer); 
+0

素晴らしい、1と出力の最後の文字列が動作し始めた、私は残り物を修正しようとします、ありがとう! – Muresha

関連する問題