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.


Anmelden zum Antworten