Błąd C ++ Błąd Niepełny typ Niedozwolony

Błąd C ++ Błąd Niepełny typ Niedozwolony
W tym przewodniku będziemy omawiać kolejny błąd, który wystąpi podczas programowania lub kodowania w języku C ++. Ten błąd jest „niekompletny typ jest niedozwolony”. Omówimy, dlaczego występuje ten błąd i przyczyny tego. Ponieważ jest to błąd w czasie kompilacji, występuje tuż przed wykonaniem kodu. Dowiemy się również rozwiązania błędu i rozwiązamy.

W języku C ++ pliki nagłówków są bardzo ważne. Jeśli używamy niektórych słów kluczowych lub wbudowanych metod C ++, musimy dodać ich odpowiednie pliki nagłówka w naszym kodzie, w przeciwnym razie kompilator da nam błąd. Teraz, aby lepiej zrozumieć błąd, najpierw omówimy, jakie są pliki nagłówka i jaki jest ich cel. Pliki nagłówka są zawarte u góry kodu.

Pliki nagłówkowe są jak biblioteki importu, które importujemy, aby korzystać z ich funkcji. Te pliki czasami działają jako pliki klas, które mają w sobie różne funkcje. Pliki nagłówkowe są niezbędne do dodania do ich użycia. Jeśli spróbujemy użyć tych funkcji bezpośrednio i nie importujemy plików nagłówka, otrzymujemy ten błąd. Ten błąd występuje również, gdy kompilator wykrywa każdy nieznany identyfikator, który ma znany danych, ale nie ma znanej definicji. Czasami ten błąd występuje również, jeśli używasz przestarzałego IDE lub kompilatora.

Ten błąd występuje w różnych typach, które są następujące:

  1. Niekompletny typ jest niedozwolony
  2. Stringstream Niekompletny typ jest niedozwolony
  3. ifstream Niekompletny typ jest niedozwolony

Składnia:

To nie jest wbudowana funkcja ani biblioteka. Raczej omawiamy, że jest to błąd i ponieważ wszyscy wiemy, że błąd nie ma określonej składni. To jest wiadomość, którą kompilator zwraca, gdy otrzymamy nasz błąd.

Błąd: pole „rodzic” ma niekompletny typ „A”

Zauważ, że w powyższym komunikacie o błędzie słowa kluczowe „nadrzędne” i „a” nie są statyczne. Wciąż się zmieniają w zależności od kodu. Ta rzecz zostanie zrozumiana po wykonaniu przykładów.

Przykład nr 01:

Aby lepiej zrozumieć nasz błąd, wykonamy teraz przykład, aby uzyskać błąd. Następnie rozwiązamy błąd. Aby to zrobić, zadeklarowaliśmy klasę o nazwie „TestClass”. W naszej klasie w sekcji Modyfikatora dostępu publicznego stworzyliśmy obiekt naszej klasy pod nazwą „rodzic”.

Następnie stworzyliśmy wskaźnik naszej klasy, która wskazuje na wskaźnik obiektu naszej klasy. Nie robimy niczego innego ani nie nazywamy niczego w metodzie Main () ani nie wykonujemy żadnej operacji. To najprostszy przykład, jaki próbowaliśmy wykonać, abyś zrozumiał. Teraz uruchomimy nasz kod, aby zobaczyć wyniki.

#włączać
za pomocą przestrzeni nazw Std;
klasa testowa

publiczny:
TestClass Parent; /*Aby rozwiązać błąd: TestClass*Parent;*/
TestClass (testClass *ptr): rodzic ( *ptr)


;
int main ()

W kompilacji naszego kodu system rzucił błąd i nie z powodzeniem go skompilował. Aby odkryć przyczynę tego błędu, spójrzmy na komunikat o błędzie. Komunikat o błędzie mówi, że „pole„ nadrzędne ”ma niepełny typ„ klasa testowa ””. To ten sam błąd, który omawiamy, który jest niekompletnym typem, który nie jest dozwolony. Tak więc system pokazał ten błąd, ponieważ mamy niekompletny typ, który, jak wiemy, jest niedozwolony. Teraz rozwiązamy nasz błąd.

Aby rozwiązać nasz błąd, nie zrobiliśmy nic więcej. Właśnie zastąpiliśmy obiekt klas testowych z prostego obiektu na wskaźnik. Teraz uruchomię nasz zmodyfikowany kod, aby obserwować, jak to działa.

Tym razem nasz kod z powodzeniem wykonał bez żadnego błędu. Nie wykonaliśmy żadnej operacji w naszym kodzie, więc ma puste wyjście. Przyczyną błędu było to, że próbowaliśmy stworzyć instancję obiektu klasy, która nie jest możliwa, ponieważ użyliśmy go już w konstruktorze. W takim przypadku kompilator wywołuje rekurencyjnie kod i staje się nieskończone, dlatego nie jest to możliwe.

Przykład nr 02:

Omówiliśmy już w naszej części wprowadzenia, że ​​ten błąd może być spowodowany z wielu powodów. Naszym celem jest omówienie jak największej liczby powodów. Aby osiągnąć nasz cel, wykonaliśmy kolejny prosty przykład, abyś zrozumiał błąd. Aby wykonać ten przykład, nie stworzyliśmy żadnej klasy, struktury, funkcji ani żadnego. Po prostu nazywaliśmy StringStream, który jest używany do działania z ciągami takimi jak obliczanie liczby słów itp.

#włączać
za pomocą przestrzeni nazw Std;
int main ()

std :: stringStream obj;
powrót 0;

Jest to błąd, który otrzymamy po wykonaniu naszego kodu, co oznacza, że ​​tym razem kod nie był w stanie pomyślnie skompilować. Komunikat o błędzie mówi, że agregat std :: stringsstream „obj” ma niekompletny typ i nie można go zdefiniować. Tak więc komunikat o błędzie jest nieco inny niż poprzedni. Ale tutaj jest taki sam: że jest to „niekompletny typ”. Ale dlaczego ten problem miał miejsce tym razem, gdy nie skorzystaliśmy z zajęć? Postaramy się wyeliminować błąd i dzięki temu dowiemy się również przyczyny jego wystąpienia.

Omówiliśmy wcześniej, że ten błąd występuje również, jeśli w naszym kodzie brakuje pliku nagłówka. Więc dodamy plik nagłówka, który jest „sstream” i zobaczymy, co się stanie. Wykonajmy nasz kod.

Tym razem kod jest pomyślnie wykonywany. Powodem błędu było to, że korzystaliśmy z funkcji StringStream, ale nie dodaliśmy jej biblioteki w sekcji plików nagłówka. Po dodaniu pliku nagłówka kod wykonał pomyślnie.

Wniosek

W tym przewodniku omówiliśmy błąd występujący podczas kodowania w języku C ++: ten błąd jest „niekompletny typ”. Omówiliśmy przyczynę błędu i sposoby wyeliminowania tego błędu. Przeprowadziliśmy również przykłady obsługi różnych scenariuszy, aby zrozumieć błąd. W końcu podsumujemy cały artykuł, mówiąc, że musisz upewnić się, że kilka rzeczy, aby uniknąć uzyskania takich błędów. Te niewiele rzeczy musimy sprawdzić, czy dołączyliśmy wszystkie wymagane pliki nagłówka w naszym kodzie, czy nie. Sprawdź, czy tytuł danych obiektów są prawidłowe, czy nie. W większości przypadków używamy prostych obiektów, ale nasz kod wymaga korzystania z wskazówek. Jeśli w naszym kodeksie dokonujemy oświadczenia o jakiejkolwiek strukturze lub klasie, musimy sprawdzić, czy definicja tej klasy lub struktury jest dostępna w naszym kodzie, czy nie.