Pertanyaan peringatan C4180: kualifikasi yang diterapkan ke tipe fungsi tidak memiliki arti; diabaikan


Saya sudah menyiapkan kompilator /Za pilihan untuk menonaktifkan ekstensi lanquage sehingga compiler menggunakan ISO C ++ secara ketat standar. Berikut ini contoh kelas antarmuka yang saya terima peringatan berikut

peringatan C4180: kualifikasi yang diterapkan ke tipe fungsi tidak memiliki arti;   diabaikan

Ini adalah tentang const qualifier dalam jenis pengembalian fungsi, jika saya menghapus const, peringatan disapear tetapi saya tidak ingin melakukan itu, neather saya ingin mengaktifkan kembali ekstensi lanqage.

Pertanyaan saya adalah: Apakah peringatan itu masuk akal? Jika tidak maka saya akan menggunakan pragma untuk menonaktifkan peringatan tetapi sebelum itu saya ingin memastikan bahwa peringatan ini "salah positif"

Karena kelas berikut ini adalah Correct ANSI ISO C ++ Isn'it? jadi peringatannya harus dinonaktifkan?

    class IBet
    {
    public:
        IBet() { };
        virtual ~IBet() = 0 { };
        virtual const float parentChips() const = 0; // Warning C4180
        virtual const short parentChilds() const = 0; // Warning C4180
            // ...
    };

4
2018-04-28 13:19


asal


Jawaban:


Nilai kembalian dari dua fungsi dinyatakan sebagai const. Karena dilewatkan oleh nilai itu tidak ada artinya. Anda bisa menghapusnya const karena sama sekali tidak ada gunanya.


7
2018-04-28 13:21