Mengapa baris ini memberikan kesalahan Error: incomplete type is not allowed
?
stringstream ss;
c++
types
stringstream
pighead10
sumber
sumber
#include<stringstream>
atau sesuatu yang seharusnya saya gunakan? #include <iostream> #include <cstdio> #include <cmath> #include <cstring> #include <string> #include <fstream> #include <cstdlib> #include <vector>Jawaban:
#include <sstream>
dan gunakan nama yang sepenuhnya memenuhi syarat yaitustd::stringstream ss;
sumber
Beberapa tajuk sistem memberikan deklarasi maju
std::stringstream
tanpa definisi. Ini membuatnya menjadi 'tipe tidak lengkap'. Untuk memperbaikinya, Anda perlu menyertakan definisi, yang disediakan di<sstream>
header:sumber
Sebuah
incomplete type
kesalahan ketika compiler bertemu penggunaan sebuah identifier yang ia tahu adalah jenis, misalnya karena telah melihat ke depan deklarasi itu (misalnyaclass stringstream;
), tetapi belum melihat definisi penuh untuk itu (class stringstream { ... };
).Ini bisa terjadi untuk jenis yang belum Anda gunakan dalam kode Anda sendiri tetapi hanya ada melalui file header yang disertakan - saat Anda menyertakan file header yang menggunakan jenis tersebut, tetapi bukan file header tempat jenis tersebut ditentukan. Header tidak biasa jika tidak menyertakan semua header yang dibutuhkannya, tetapi bukan tidak mungkin.
Untuk hal-hal dari perpustakaan standar, seperti
stringstream
kelas, gunakan standar bahasa atau dokumentasi referensi lainnya untuk kelas atau fungsi individu (misalnyaman
halaman Unix , perpustakaan MSDN, dll.) Untuk mencari tahu apa yang Anda perlukan#include
untuk menggunakannya dan apa namespace untuk menemukannya jika ada. Anda mungkin perlu mencari halaman di mana nama kelas muncul (misalnyaman -k stringstream
).sumber