Programm bringt Fehler C4430 missing type specifier
-
Hallo Zusammen,
Ich muss an der Schule ein Programm schreiben, das Programm habe ich in 2 Klassen unterteil und dort Methoden definiert, jedoch bringt er beim kompilieren immer die Fehlermeldung bei einer Methode:
Error 1 error C4430: missing type specifier - int assumed. Note: C++ does not support default-int c:\users\test\desktop\logcom\logcom\csAD_Getcomputer.cpp 43.
Ich hab schon einige Beiträge gelesen aber, eigenrtlich nichts gefunden, wäre dankbar wenn jemand ein Tipp geben könnte wo der Fehler sein könnte...
Habe den Code noch angehägt./* Quelldatei von der Klase csAD_Getcomputer, hier ist die Methode gespeichert wie alle Computer vom Active Directory geholt werden können. In der Methode sind auch die Pingfunktion, ob ein Computer Online oder Offline ist vorhanden und noch die Funktion, einen ausgewählten User zu durchsuchen, ob dieser im Computer eingeloggt ist. */ #include "StdAfx.h" #include "csAD_Getcomputer.h" using namespace System::DirectoryServices; using namespace System::Net; using namespace System::Net::NetworkInformation; using namespace System::Text; using namespace System::IO; // Methode um alle Computer vom Active Directory zu holen ArrayList^ csAD_Getcomputer::getcomputer(ArrayList^ ComputerList) { // Computer vom Active Directory wird gesucht DirectorySearcher^ ds = gcnew DirectorySearcher(); ds->Filter = "(|(&(objectCategory=computer)(name=*)(operatingSystem=*)))"; // Filter für die Suche ds->Sort= gcnew SortOption("name",SortDirection::Ascending); // Sortiert die ausgabe SearchResultCollection^ src = ds->FindAll(); for each (SearchResult^sr in src) { DirectoryEntry^ dr = sr->GetDirectoryEntry(); String^ text = dr->Name->Substring(3); ComputerList->Add(text->ToString()); } return (ComputerList); } /*Methode um Computer auf Online oder Offline zu überprüfen und um zu überprüfen ob User eingeloggt oder nicht.*/ csAD_Getcomputer::getping(ArrayList^ ComputerList, String^ cn) { // Funktion zur Überprüfung der Computer ob Online oder Offline array<String^>^args = Environment::GetCommandLineArgs(); Ping ^ pingSender = gcnew Ping; PingOptions ^ options = gcnew PingOptions; // Use the default Ttl value which is 128, // but change the fragmentation behavior. options->DontFragment = true; // Create a buffer of 32 bytes of data to be transmitted. String^ data = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; // args[1] = "lfb-d96.ethz.ch"; array<Byte>^buffer = Encoding::ASCII->GetBytes( data ); int timeout = 120; try { for each (String^ cn in ComputerList) { //lbsearch->Text = cn; //lbsearch->Update(); PingReply ^ reply = pingSender->Send( cn, timeout, buffer, options ); if ( reply->Status == IPStatus::Success) { // Testen ob User vorhanden String^ test = "\\\\"+cn+"\\""C$\\Users""\\"+Nachname; String^ testxp = "\\\\"+cn+"\\""C$\\Documents and Settings""\\"+Nachname; // Variable für Form1, da von Methode nicht auf Form zugegriffen werden kann. // Für test ArrayList^ form = gcnew ArrayList; // Variable für Form1, da von Methode nicht auf Form zugegriffen werden kann. // Für testxp ArrayList^ formxp = gcnew ArrayList; if (Directory::Exists(test)) { //Form1::lbListComputer->Items->Add(cn); form->Add(cn); } // End If Directory Test Win 7 else { if ( Directory::Exists(testxp)) { //Form1::lbListComputer->Items->Add(cn); formxp->Add(cn); } // End IF XP } // End Else //Computer wird ermittelt und ausgegeben /*Form1::lbListComputer->Update(); int^ anzahlComputer = Form1::lbListComputer->Items->Count; Form1::lbComputerFound->Text =anzahlComputer+" Computer are used"; Form1::lbComputerFound->Update(); */ } // End If else { } // End Else } // End For } // End Try catch (Exception ^e) { //MessageBox::Show( "IP Addresse oder Hostname konnte nicht aufgelöst werden, bitte Administrator kontaktieren!" , "Fehler in IP oder Hostname"); } };
Danke Nochmals und Ciao
-
Bei csAD_Getcomputer::getping fehlt der Rückgabetyp.
-
Lol Danke für den Hinweis, hab den Rückgabetyp noch hinzugefügt, aber er bringt imemr noch den gleichen Fehler...
-
Aha und was ist der Rückgabetyp?
-
Hallo Theta der Rückgabetyp ist:
return (cn);
Ich schreibe das erste Mal im Forum, weiss nicht ob man noch mehr Informationen braucht oder der Code eigentlich nur reicht....
-
Hast du auch die Methoden-Deklaration in
String^ csAD_Getcomputer::getping(...)
geändert?
[offtopic]
Und noch ein Schüler, der mit C++/CLI gequält wird
[/offtopic]BTW. ArrayList gehört schon seit Jahren in die Mottenkiste...
-
Hallo,
Danke für die schnellen Antworten und guten Tipps, nein hatte die Deklaration nicht umgeändert, warum muss man die nachher in ein String umwandeln? Ich habe jetzt die Methodendefinition so geändert wie du es vorgeschlagen hast:
String^ csAD_Getcomputer::getping(ArrayList^ ComputerList, String^ cn)
Die Fehlermeldung C4430 ist nicht mehr vorhanden
jedoch kommt jetzt der folgende Fehlermeldung:
Error 1 error C2556: 'System::String ^csAD_Getcomputer::getping(System::Collections::ArrayList ^,System::String ^)' : overloaded function differs only by return type from 'System::Collections::ArrayList ^csAD_Getcomputer::getping(System::Collections::ArrayList ^,System::String ^)' c:\users\test\desktop\logcom\logcom\csAD_Getcomputer.cpp 43
Werde woll die Methoden mal durchsuchen müssen was overloaded wird
.
Falls jemand schon Erfahrung damit hat, wäre ich für die Hilfe dankbar...
-
Du hast *zwei* Methoden definiert die sich nur durch den Rückgabewert unterscheiden. Das ist nicht erlaubt...
-
Hallo Jochen, danke für den Tipp, habe irgendwie das Programm zum laufen gebracht.
Danke für alle Personen die mir wertvolle Tipps liefern konnten.