Eksik türe izin verilmiyor: stringstream


109

Bu satır neden hata veriyor Error: incomplete type is not allowed?

stringstream ss;

Hangi başlık dosyalarını eklediniz?
Alan Stokes

Sanırım kullanmam #include<stringstream>gereken bir şey var mıydı? #include <iostream> #include <cstdio> #include <cmath> #include <cstring> #include <string> #include <fstream> #include <cstdlib> #include <vector>
pighead10

Yanıtlar:


210

#include <sstream> ve tam nitelikli adı kullanın, örn. std::stringstream ss;


Hata muhtemelen dizi akışının tanımlanmamış bir şeyin genel bir türü olarak tanımlanmasından kaynaklanmaktadır.
mireazma

Bence visual studio bazen dosyayı dahil etmeden stringstream kullanımına izin veriyor. Belki de hatanın nedeni budur
FindOutIslamNow

40

Bazı sistem başlıkları std::stringstream, tanımı olmadan ileriye dönük bir bildirim sağlar . Bu onu 'eksik tip' yapar. Bunu düzeltmek için <sstream>başlıkta sağlanan tanımı eklemeniz gerekir :

#include <sstream>

17

Bir incomplete typehata, derleyicinin bir tür olduğunu bildiği bir tanımlayıcının kullanımıyla karşılaşmasıdır, örneğin bunun bir ileri bildirimini görmesi (örneğin class stringstream;), ancak bunun için tam bir tanım görmemesi ( class stringstream { ... };).

Bu, kendi kodunuzda kullanmadığınız, ancak yalnızca dahil edilen üstbilgi dosyalarında mevcut olan bir tür için olabilir - türü kullanan başlık dosyalarını dahil ettiğinizde, ancak türün tanımlandığı başlık dosyasını dahil etmediyseniz. Bir başlığın ihtiyaç duyduğu tüm başlıkları içermemesi alışılmadık bir durumdur, ancak imkansız değildir.

stringstreamSınıf gibi standart kitaplıktaki şeyler için, onu kullanmak için neye manihtiyacınız olduğunu anlamak için dil standardını veya sınıfa veya bireysel işlevlere (örneğin Unix sayfaları, MSDN kitaplığı vb.) Yönelik diğer referans belgelerini #includekullanın. varsa bulmak için ad alanı. Sınıf adının göründüğü sayfaları aramanız gerekebilir (örneğin man -k stringstream).

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.