C++ dizi oluşturma hatasının çözümü nedir?

qualfy

Hectopat
Katılım
3 Aralık 2020
Mesajlar
525
Çözümler
1
Daha fazla  
Cinsiyet
Erkek
C++:
int main() {

 int n, val;
 cin >> n; //The number of objects that is going to be created.
 Person* per[n];

 for (int i = 0; i < n; i++) {

 cin >> val;
 if (val == 1) {
 // If val is 1 current object is of type Professor.
 per[i] = new Professor;

 }
 else per[i] = new Student; // Else the current object is of type Student.

 per[i]->getdata(); // Get the data from the user.

 }

 for (int i = 0; i < n; i++)
 per[i]->putdata(); // Print the required output for each object.

 return 0;

}

3. satırdaki diziyi oluşturmaya çalışırken hata veriyor. Bu hatanın çözümü nedir?

1678569739495.png
 
Per hatası, gibi gözüküyor şöyle dener misin. Eğer ki düzelmezse C++ sürümünüzü güncelleyin C3863 hatası bu ikisinden dolayı olur.

Kod:
int main() {
    int n, val;
    cin >> n; //The number of objects that is going to be created.
    Person** per = new Person*[n];

    for (int i = 0; i < n; i++) {
        cin >> val;
        if (val == 1) {
            // If val is 1 current object is of type Professor.
            per[i] = new Professor;
        }
        else {
            per[i] = new Student; // Else the current object is of type Student.
        }
        per[i]->getdata(); // Get the data from the user.
    }

    for (int i = 0; i < n; i++) {
        per[i]->putdata(); // Print the required output for each object.
        delete per[i]; // Free memory block for each per element.
    }

    delete[] per; // Free the memory allocated for the array.

    return 0;
}
 
Per hatası, gibi gözüküyor şöyle dener misin? Eğer ki düzelmezse C++ sürümünüzü güncelleyin C3863 hatası bu ikisinden dolayı olur.

Kod:
int main() {
 int n, val;
 cin >> n; //The number of objects that is going to be created.
 Person** per = new Person*[n];

 for (int i = 0; i < n; i++) {
 cin >> val;
 if (val == 1) {
 // If val is 1 current object is of type Professor.
 per[i] = new Professor;
 }
 else {
 per[i] = new Student; // Else the current object is of type Student.
 }
 per[i]->getdata(); // Get the data from the user.
 }

 for (int i = 0; i < n; i++) {
 per[i]->putdata(); // Print the required output for each object.
 delete per[i]; // Free memory block for each per element.
 }

 delete[] per; // Free the memory allocated for the array.

 return 0;
}

Evet bunu yapınca düzeldi teşekkürler. Nasıl güncelleyebilirim acaba?
 
Per hatası, gibi gözüküyor şöyle dener misin. Eğer ki düzelmezse C++ sürümünüzü güncelleyin C3863 hatası bu ikisinden dolayı olur.

Kod:
int main() {
    int n, val;
    cin >> n; //The number of objects that is going to be created.
    Person** per = new Person*[n];

    for (int i = 0; i < n; i++) {
        cin >> val;
        if (val == 1) {
            // If val is 1 current object is of type Professor.
            per[i] = new Professor;
        }
        else {
            per[i] = new Student; // Else the current object is of type Student.
        }
        per[i]->getdata(); // Get the data from the user.
    }

    for (int i = 0; i < n; i++) {
        per[i]->putdata(); // Print the required output for each object.
        delete per[i]; // Free memory block for each per element.
    }

    delete[] per; // Free the memory allocated for the array.

    return 0;
}
C++'da VLA hangi standart versiyonda geldi? Bildiğim kadarıyla gelmedi.
Evet bunu yapınca düzeldi teşekkürler. Nasıl güncelleyebilirim acaba?
Derleyiciyi güncelleyerek. Hatanın sebebi ise değişken uzunluklu bir dizi oluşturmaya çalışman. Diziler derleme zamanında belirlenebilen uzunluklara sahip olmak zorundadır.
 
C++ Sürümümü.
Sürüm güncel olmasaydı yeniden hata alırdınız hocam.

C++'da VLA hangi standart versiyonda geldi? Bildiğim kadarıyla gelmedi.

Derleyiciyi güncelleyerek. Hatanın sebebi ise değişken uzunluklu bir dizi oluşturmaya çalışman. Diziler derleme zamanında belirlenebilen uzunluklara sahip olmak zorundadır.
VLA direkt derleyicilerde yok hocam.
 

Technopat Haberler

Yeni konular

Geri
Yukarı