Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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