Udostępnij za pomocą


Błędy kompilatora — od C2500 do C2599

Artykuły w tej sekcji dokumentacji wyjaśniają podzbiór komunikatów o błędach generowanych przez kompilator.

Ważne

Kompilatory i narzędzia kompilacji programu Visual Studio mogą zgłaszać wiele rodzajów błędów i ostrzeżeń. Po znalezieniu błędu lub ostrzeżenia narzędzia kompilacji mogą podjąć założenia dotyczące intencji kodu i próby kontynuowania, dzięki czemu więcej problemów można zgłaszać w tym samym czasie. Jeśli narzędzia przyjmą błędne założenie, późniejsze błędy lub ostrzeżenia mogą nie mieć zastosowania do projektu. W przypadku naprawiania problemów w projekcie zawsze należy zacząć od pierwszego zgłoszonego błędu lub ostrzeżenia i często ponownie skompilować. Jedna poprawka może rozwiązać wiele kolejnych błędów.

Aby uzyskać pomoc dotyczącą konkretnego komunikatu diagnostycznego w programie Visual Studio, wybierz go w oknie Dane wyjściowe i naciśnij F1 . Program Visual Studio otwiera stronę dokumentacji dla tego błędu, jeśli istnieje. Możesz również użyć narzędzia wyszukiwania w górnej części strony, aby znaleźć artykuły dotyczące określonych błędów lub ostrzeżeń. Możesz też przejrzeć listę błędów i ostrzeżeń według narzędzia i wpisać spis treści na tej stronie.

Uwaga

Nie każdy błąd lub ostrzeżenie programu Visual Studio nie jest udokumentowane. W wielu przypadkach komunikat diagnostyczny zawiera wszystkie dostępne informacje. Jeśli trafisz na tę stronę i pomyśl, że komunikat o błędzie lub ostrzeżeniu wymaga dodatkowego wyjaśnienia, daj nam znać, korzystając z przycisków opinii na tej stronie. Jeśli uważasz, że błąd lub ostrzeżenie jest nieprawidłowe lub znaleziono inny problem z zestawem narzędzi, zgłoś problem z produktem w witrynie Społeczność deweloperów. Możesz również wysłać opinię i wprowadzić usterki w środowisku IDE. W programie Visual Studio przejdź do paska menu i wybierz pozycję Pomoc > Wyślij opinię > Zgłoś problemlub prześlij sugestię przy użyciu Pomoc > Wyślij opinię > Zasugeruj funkcję. Niektóre tematy błędów kompilatora zostały utworzone, które nie są emitowane przez kompilator, a teraz przekieruj do tej strony.

Dodatkową pomoc dotyczącą błędów i ostrzeżeń można znaleźć na forach Microsoft Q&A C++. Możesz też wyszukać numer błędu lub ostrzeżenia w witrynie Społeczności deweloperów programu Visual Studio C++. Możesz również wyszukać rozwiązanie Stack Overflow , aby znaleźć rozwiązania.

Aby uzyskać linki do dodatkowych zasobów pomocy i społeczności, zobacz Visual C++ Help and Community (Pomoc i społeczność języka Visual C++).

Komunikaty o błędach

Błąd Komunikat
Błąd kompilatora C2500 "identifier1": "identifier2" jest już bezpośrednią klasą bazową
Błąd kompilatora C2501 "identifier": "__declspec(specyfikator)" można stosować tylko do struktur, związków, klas lub niepodpisanych składowych pól bitowych
Błąd kompilatora C2502 "identifier": zbyt wiele modyfikatorów dostępu w klasie bazowej
Błąd kompilatora C2503 "class": klasy bazowe nie mogą zawierać tablic o zerowym rozmiarze
Błąd kompilatora C2504 "klasa": niezdefiniowana klasa bazowa
Błąd kompilatora C2505 "symbol": "__declspec(specyfikator)" można stosować tylko do deklaracji lub definicji obiektów globalnych lub statycznych składowych danych
Błąd kompilatora C2506 'member': '__declspec(specyfikator)' nie można zastosować do tego symbolu
Błąd kompilatora C2507 "identifier": zbyt wiele modyfikatorów wirtualnych w klasie bazowej
Błąd kompilatora C2508 "identifier": "__declspec(specyfikator1)" nie może być połączony z "__declspec(specyfikator2)"
Błąd kompilatora C2509 "identifier": funkcja składowa nie zadeklarowana w klasie
Błąd kompilatora C2510 'identifier': lewo od '::' musi być klasą/strukturą/union
Błąd kompilatora C2511 "identifier": nie można odnaleźć przeciążonej funkcji składowej w klasie
Błąd kompilatora C2512 "identifier": brak odpowiedniego konstruktora domyślnego dostępnego
Błąd kompilatora C2513 '*type': brak zmiennej zadeklarowanej przed '='
Błąd kompilatora C2514 "class": klasa nie ma konstruktorów
Błąd kompilatora C2515 "identifier": "vtguard" można stosować tylko do deklaracji klas lub definicji
Błąd kompilatora C2516 "klasa": nie jest legalną klasą bazową
Błąd kompilatora C2517 "identifier": prawo od '::' jest niezdefiniowane
Błąd kompilatora C2518 słowo kluczowe 'słowo kluczowe' jest nieprawidłowe na liście klas bazowych; oczekiwano nazwy class
Błąd kompilatora C2519 "identifier": atrybuty WinRT mogą zawierać tylko pola publiczne
Błąd kompilatora C2520 "class": brak jawnego konstruktora dostępnego do konwersji niejawnej
Błąd kompilatora C2521 destruktor/finalizator nie bierze żadnych argumentów
Błąd kompilatora C2522 "identifier": Identyfikator przeciążenia nie może być używany w identyfikatorze "identifier1", ponieważ jest on już określony w identyfikatorze "identifier2"
Błąd kompilatora C2523 'class::~identifier': niezgodność tagów destruktora/finalizatora
Błąd kompilatora C2524 "identifier": destruktor/finalizer musi mieć listę parametrów "void"
Błąd kompilatora C2525 "identifier": Parametr "identifier1" ma nazwę "identifier2" w funkcji podstawowej i musi być dopasowany w opublikowanej implementacji
Błąd kompilatora C2526 "identifier1": Funkcja łączenia języka C nie może zwrócić klasy C++ "identifier2"
Błąd kompilatora C2527 "identifier": Parametr DefaultOverload nie może być określony zarówno dla funkcji function1, jak i "function2". Usuwanie jednej specyfikacji lub zmienianie nazwy funkcji podczas implementacji
Błąd kompilatora C2528 "identyfikator": wskaźnik do odwołania jest niedozwolony
Błąd kompilatora C2529 "identyfikator": odwołanie do odwołania jest niedozwolone
Błąd kompilatora C2530 "identyfikator": odwołania muszą być inicjowane
Błąd kompilatora C2531 "identyfikator": odwołanie do niedozwolonego pola bitowego
Błąd kompilatora C2532 "identyfikator": niedozwolony modyfikator do celów referencyjnych
Błąd kompilatora C2533 "identifier": konstruktory nie zezwalają na zwracany typ
Błąd kompilatora C2534 "identifier": konstruktor nie może zwrócić wartości
Błąd kompilatora C2535 "identifier": funkcja składowa już zdefiniowana lub zadeklarowana
Błąd kompilatora C2536 Nieaktualne.
Błąd kompilatora C2537 "specyfikator": specyfikacja nielegalnego połączenia
Błąd kompilatora C2538 Nieaktualne.
Błąd kompilatora C2539 Nieaktualne.
Błąd kompilatora C2540 wyrażenie inne niż stałe jako powiązana tablica
Błąd kompilatora C2541 "identyfikator": nie można usunąć obiektów, które nie są wskaźnikami
Błąd kompilatora C2542 "identifier": obiekt klasy nie ma konstruktora do inicjowania
Błąd kompilatora C2543 oczekiwany operator "]" dla operatora "[]"
Błąd kompilatora C2544 oczekiwano znaku ")" dla operatora "()"
Błąd kompilatora C2545 "operator": nie można odnaleźć przeciążonego operatora
Błąd kompilatora C2546 "identifier": jeśli typ jest zdefiniowany zarówno w pia, jak i no-PIA, numer PIA musi być przywołyny jako pierwszy
Błąd kompilatora C2547 "identifier": Wszystkie parametry opublikowanej metody muszą być jawnie nazwane w deklaracji
Błąd kompilatora C2548 "function": brak domyślnego argumentu parametru parametru
Błąd kompilatora C2549 Konwersja zdefiniowana przez użytkownika nie może określać typu zwracanego
Błąd kompilatora C2550 "identifier": listy inicjatorów konstruktorów są dozwolone tylko w definicjach konstruktorów
Błąd kompilatora C2551 Typ "void *" wymaga jawnego rzutu
Błąd kompilatora C2552 "identyfikator": nie można zainicjować agregacji z listą inicjatora
Błąd kompilatora C2553 "typederived_class::function": zastępowanie typu zwracanej funkcji wirtualnej różni się od typu "type base_class::function"
Błąd kompilatora C2554 "zmienna": "constinit" dozwolone tylko w deklaracji zmiennej ze statycznym lub wątkowym czasem przechowywania
Błąd kompilatora C2555 "derived_class::function": zastępowanie typu zwracanego funkcji wirtualnej różni się i nie jest kowariantne z "base_class::function"
Błąd kompilatora C2556 "function1": przeciążona funkcja różni się tylko przez typ zwracany z "function2"
Błąd kompilatora C2557 "identyfikator": nie można zainicjować prywatnych i chronionych elementów członkowskich bez konstruktora
Błąd kompilatora C2558 klasa "class": żaden konstruktor kopiujący nie jest dostępny lub konstruktor kopiujący jest zadeklarowany jako "jawny"
Błąd kompilatora C2559 "identifier": nie może przeciążyć funkcji składowej bez kwalifikatora ref z funkcją składową z kwalifikatorem ref
Błąd kompilatora C2560 "identifier": nie może przeciążyć funkcji składowej z kwalifikatorem ref z funkcją składową bez kwalifikatora ref
Błąd kompilatora C2561 "function": funkcja musi zwrócić wartość
Błąd kompilatora C2562 "function": funkcja "void" zwracająca wartość
Błąd kompilatora C2563 niezgodność na liście parametrów formalnych
Błąd kompilatora C2564 Nieaktualne.
Błąd kompilatora C2565 "identyfikator": kwalifikator ref jest niedozwolony dla konstruktorów/destruktora
Błąd kompilatora C2566 przeciążona funkcja w wyrażeniu warunkowym
Błąd kompilatora C2567 nie można otworzyć metadanych w pliku "nazwa pliku", possible_reason
Błąd kompilatora C2568 "identifier": nie można rozpoznać przeciążenia funkcji
Błąd kompilatora C2569 "identifier": wyliczenia/unii nie można użyć jako klasy bazowej
Błąd kompilatora C2570 "identifier": union nie może mieć klas bazowych
Błąd kompilatora C2571 "identifier": funkcja wirtualna nie może znajdować się w unii "union"
Błąd kompilatora C2572 "function": ponowne zdefiniowanie domyślnego argumentu: numer parametru
Błąd kompilatora C2573 "klasa": nie można usunąć wskaźników do obiektów tego typu; klasa nie ma przeciążenia niezlokowania dla "operator delete". Użyj polecenia ::d elete lub dodaj element "operator delete(void*)" do klasy
Błąd kompilatora C2574 "function": nie można zadeklarować statycznego
Błąd kompilatora C2575 "identifier": tylko funkcje składowe i podstawy mogą być wirtualne
Błąd kompilatora C2576 "identifier": nie można wprowadzić nowej metody wirtualnej jako "publicznej". Rozważ wprowadzenie metody innej niż wirtualna lub zmianę ułatwień dostępu do "wewnętrznych" lub "chronionych prywatnych"
Błąd kompilatora C2577 "identifier": destruktor/finalizator nie może mieć typu zwracanego
Błąd kompilatora C2578 "class": typ nie może mieć konstruktora "protected" ani "protected public"
Błąd kompilatora C2579 nie można rozpoznać typu typu (przesunięcie). Oczekiwano jej w nazwie pliku
Błąd kompilatora C2580 "identifier": wiele wersji domyślnych specjalnych funkcji składowych nie jest dozwolonych
Błąd kompilatora C2581 "type": statyczna funkcja "operator =" jest nielegalna
Błąd kompilatora C2582 Funkcja "operator" jest niedostępna w typie
Błąd kompilatora C2583 "identyfikator": wskaźnik "const/volatile" "this" jest niedozwolony dla konstruktorów/destruktorów
Błąd kompilatora C2584 "class": bezpośrednia baza "base_class2" jest niedostępna; już baza "base_class1"
Błąd kompilatora C2585 jawna konwersja na typ jest niejednoznaczna
Błąd kompilatora C2586 nieprawidłowa składnia konwersji zdefiniowanej przez użytkownika: niedozwolone pośredni
Błąd kompilatora C2587 "identifier": niedozwolone użycie zmiennej lokalnej jako parametru domyślnego
Błąd kompilatora C2588 '::~identifier': nielegalny destruktor globalny/finalizator
Błąd kompilatora C2589 "identifier": niedozwolony token po prawej stronie "::"
Błąd kompilatora C2590 "identifier": tylko konstruktor może mieć listę inicjatora podstawowego/składowego
Błąd kompilatora C2591 Wartość ExclusiveTo nie może używać argumentu "type". Tylko klasa "ref" jest prawidłowym argumentem
Błąd kompilatora C2592 "class": "base_class2" jest dziedziczony z "base_class1" i nie można go ponownie określić
Błąd kompilatora C2593 Identyfikator operatora jest niejednoznaczny
Błąd kompilatora C2594 "operator": niejednoznaczne konwersje z "type1" do "type2"
Błąd kompilatora C2595 Typ atrybutu WinRT "identifier" musi być zapieczętowany
Błąd kompilatora C2596 "identifier" Pole atrybutu WinRT może być tylko "publiczną klasą wyliczenia", "int", "unsigned int", "bool", "Platform::Type", "Platform::String" lub "Windows::Foundation::HResult"
Błąd kompilatora C2597 niedozwolone odwołanie do niestacjonanego elementu członkowskiego "identyfikator"
Błąd kompilatora C2598 specyfikacja połączenia musi znajdować się w zakresie globalnym
Błąd kompilatora C2599 "identifier": deklaracja przesyłania dalej zarządzanego/wyliczenia WinRT jest niedozwolona

Zobacz też

Błędy i ostrzeżenia kompilatora C/C++ i narzędzi kompilacji
Błędy kompilatora C2000 — C3999, C7000 – C7999