كيف أعلن حجم صفيف السلسلة إذا كانت وظيفة عضو
سؤال
لدي مشكلة في تحديد حجم صفيف بلدي. في الكود الخاص بي:
class Test {
public:
....//Functions
private:
string name[];
};
Test() {
//heres where i want to declare the size of the array
}
هل هذا ممكن؟
المحلول
لا. لكن يمكنك استخدام متجه من السلاسل بدلاً من ذلك:
private:
std::vector<std::string> name;
ثم في مُنشرك:
Test()
: name(sizeOfTheArray)
{
}
سيكون المتجه حجمًا لعدد الأوتار التي تحددها. هذا يعني أنه سيتم تخصيص جميع ذاكرة الأوتار في وقت واحد. يمكنك تغيير حجم الصفيف كما يحلو لك ، ولكن لا يوجد شيء يقول أنه يجب عليك. وبالتالي ، تحصل على جميع فوائد استخدام صفيف مخصص ديناميكيًا ، ثم بعضها ، بدون عيوب.
نصائح أخرى
ستحتاج إلى تخصيص الذاكرة ديناميكيًا للمصفوفة باستخدام new
.
أعلن أن المتغير مثل هذا:
private:
string* name;
وفي مُنشرك ، افعل هذا:
int size = ...
name = new string[size];
وتحرير الذاكرة في المدمرة مثل هذا:
delete [] name;
لا تنتمي إلى StackOverflow