2016-04-02 8 views
0
class books{ 
public: 
    char* genre; 
    books(char *n); 
}; 

books::books(char*n){ 
    genre = new char[strlen(n)+1]; 
    strcpy(genre,n); 
} 

int main(){ 
    book harrypotter; 
    char n[20]; 
    cin>>n; 
    harrypotter.books(n); 
} 

私の責任はどこにあるのか理解してもらえますか?私は不足ポインターを持っていると思う:(どのようにn [20]配列をクラスの* genreメンバに割り当てるのですか?パラメータ化されたコンストラクタにchar配列を渡す

答えて

1

コンストラクタは、オブジェクトの宣言時にのみ呼び出すことができます。大丈夫、しかしmain内のコードではありません。

int main() { 
    char n[20]; 
    cin >> n; 
    books harrypotter(n);   // calling parameterized constructor 
    cout << harrypotter.genre;  // == cout << n;  
} 

また、あなたが明示的にそうなるまでnewを使用して割り当てられたメモリが解放されないことに注意してくださいます。それを行うにはデストラクタを行います。

+0

感謝男は、多くを助けた:DIは関数を呼び出す上で間違っていた:)) – Cool

+0

また、それが有用であればそれをupvoteすることができます – anukul

関連する問題