Błąd kompilatora C3767
Funkcje kandydata "function" są niedostępne
Funkcja przyjazna zdefiniowana w klasie nie powinna być traktowana tak, jakby została zdefiniowana i zadeklarowana w zakresie globalnej przestrzeni nazw. Można go jednak znaleźć za pomocą wyszukiwania zależnego od argumentów.
Zmiana powodująca niezgodność może być również spowodowana przez zmianę powodującą niezgodność: typy natywne są teraz domyślnie prywatne w kompilacji /clr ; zobacz Widoczność typu, aby uzyskać więcej informacji.
Przykład
Poniższy przykład generuje C3767:
// C3767a.cpp
// compile with: /clr
using namespace System;
public delegate void TestDel();
public ref class MyClass {
public:
static event TestDel^ MyClass_Event;
};
public ref class MyClass2 : public MyClass {
public:
void Test() {
MyClass^ patient = gcnew MyClass;
patient->MyClass_Event();
}
};
int main() {
MyClass^ x = gcnew MyClass;
x->MyClass_Event(); // C3767
// OK
MyClass2^ y = gcnew MyClass2();
y->Test();
};
Poniższy przykład generuje C3767:
// C3767c.cpp
// compile with: /clr /c
ref class Base {
protected:
void Method() {
System::Console::WriteLine("protected");
}
};
ref class Der : public Base {
void Method() {
((Base^)this)->Method(); // C3767
// try the following line instead
// Base::Method();
}
};
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla