私のクラスのメンバで、別のクラスが必要な変数を持っていますが、グローバル変数を使わずにそれらの間で効果的に値を渡すことができます。これは可能な限り避けたいものです。私はオブジェクトを作成することができますが、それはいくつかの関数を実行し、不要な結果をメモリに書き込む、元のクラスのコンストラクタを呼び出すため、システムリソースが無駄になります。C++で新しいオブジェクトを作成せずにクラスから変数を渡すことは可能ですか?
2つの関数の間にこの値を渡す簡単な方法はありますか?
更新:変数を必要としているクラスは、no_of_existing_devices
と呼ばれます。 class Initialise
の目的は、ファイルを開くとそれに含まれるテストの行数をカウントし、各
class Device
{
public:
void view_attribute_list();
void set_attribute();
Device();
};
Device::Device()
{
for (int count = 0; count < no_of_existing_devices; count ++)
{
// Create an object for each iteration, up to a maximum of no_of_existing_devices
}
}
のためのオブジェクトを作成するためにDevice::Device()
で使用される変数int no_of_existing_devices
でその数を、配置することですこの変数は、私はメンバーへのポインタを渡すた---私は、メンバ関数を呼び出す必要があったので、メンバ関数へのポインタであった同様の状況において
class Initialise
{
public:
int no_of_existing_devices;
bool initialisation;
string existing_device_list[100];
void initialise_existing_devices();
Initialise();
};
Initialise::Initialise()
{
no_of_existing_devices = 0;
}
void Initialise::initialise_existing_devices()
{
string line;
ifstream DeviceList;
DeviceList.open("devices/device_list");
while (true)
{
getline(DeviceList, line, '\n');
if (DeviceList.eof())
{
break;
}
++ no_of_existing_devices;
}
DeviceList.close();
DeviceList.open("devices/device_list");
for (int i = 0; i < no_of_existing_devices; i ++)
{
getline(DeviceList, line, '\n');
existing_device_list[i] = line;
}
Device existing_devices[no_of_existing_devices];
!initialisation; // Existing devices are now initialised
}
は今までクラスはそれが含まれているのメンバフィールドであることを意味し、この変数ですか?それはインスタンスの存在に依存するのでしょうか、それとも単独で存在するのでしょうか? – birryree
あなたが達成しようとしていることをより理解できるようにコードを投稿できますか? – pankajt
あなたが達成したいことを理解できるように、より多くのコードを投稿する必要があります。 – Puppy