私はC++が初めてです。私は、オブジェクトを作成するか、パラメータ化されたオブジェクトを作成する(そして入力としてパラメータを取る)かどうかをユーザに尋ねようとしています。ユーザの入力に基づいて実行時にオブジェクトを作成する
以下のサンプルプログラムは私が望むことをしますが、オブジェクトobjが範囲外になるので、ポインタが私のプログラム用に予約されていないメモリを指しているので間違っていると思います。
#include <iostream>
using namespace std;
class myClass{
int num;
public:
myClass()
{
num=0;
}
myClass(int parameter)
{
num=parameter;
}
~myClass()
{
cout << num << endl; //for checking purposes
}
};
int main()
{
cout << "Use default(1) or parametrized(2) constructor: ";
int choice;
cin >> choice;
myClass *ptr;
if(choice==1)
{
myClass obj;
ptr = &obj;
}
else
{
int para;
cout<< "parameter: ";
cin>>para; //input parameter
myClass obj(para);
ptr = &obj;
}
//use ptr-> from here on out
}
動的に割り当てるには 'new'を使用する必要があります。また、 'myClass *'ローポインタの代わりに 'std :: unique_ptr'を使用する方が良いでしょう。 –
@πάνταῥεῖ私はまだユニークなptrものを研究していません。 しかし、私は新しいものでそれをやろうとします。 –
@πάνταῥεῖは正しいです。あなたが 'std :: unique_ptr'を研究していないなら、' std :: observer_ptr'と一緒にそれを調べてください。新しいコードで生ポインタを使うのは悪い考えです。 – Caleth