هل يمكن أن يكون متغير ifstream متغير عالمي؟

StackOverflow https://stackoverflow.com/questions/1719530

  •  19-09-2019
  •  | 
  •  

سؤال

// stream from file.
ifstream file;

int main (int argc, char * argv[]) {

// get argument passed from command line
// This is file name
if (argc != 2 ) {
    cout << "use:  ./executable <filename>";

}else {
    //cout << "You are using filename: " << argv[1];

    // start the file stream
    file (argv[1]);
}

لماذا هل هناك أي سبب file(argv[1]) سيكون إعطاء خطأ؟ هل يمكنني الحصول على ifstream متغير عالمي؟

هل كانت مفيدة؟

المحلول

أنت تحاول الاتصال ifstream() المشغل (الذي غير موجود)، عندما يجب أن تستخدم file.open(argv[1]).

إلى جانب ذلك، لا يوجد شيء غير قانوني حول وجود عالمي ifstream.

نصائح أخرى

يمكنك الحصول على ifstream كمتغير عالمي (سواء كان هذا أسلوبا جيدا هو سؤال مختلف).

يبدو أن المشكلة هي أنك تحاول استخدام المنشئ: file(argv[1])

سيتم بالفعل إنشاء المتغير العالمي (باستخدام المنشئ الافتراضي) في هذه المرحلة، وسوف تحتاج بدلا من ذلك إلى استخدام open طريقة.

file.open( argv[1] );
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top