Fehler beim kompelieren

M

Mamoulian

Grünschnabel
Hallo ich versuche unter SUSE SLES 10 folgende Funktion zu kompeliern:

void TMCAChannel::RpcInit( const TMValVersion& nRPCVersion,
const TMValInteger& nRowCount,
va_list argList,
const TMValInteger& nRpcType,
const TMValInteger& nRpcID,
const TMValError* poErrors )
{
DEBCODE( TMCAChannel )
{
TMString sRPC;
va_list args = argList;
LPCTSTR pArg = va_arg(args,LPCTSTR);
if ( pArg )
{
sRPC += pArg;
while((pArg = va_arg(args,LPCTSTR)) !=NULL)
{
sRPC += ".";
sRPC += pArg;
}
}
sRPC += nRPCVersion.AsString();
DEBMSG1( TMCAChannel, "RpcInit( \"%s\" )\n", (LPCTSTR)sRPC );
}

SynchronizeRpcBegin();
LONG lError = m_pCAInterface->RpcInit( nRPCVersion, nRowCount, argList );

if( lError != IDE_OK )
{
TMValError err(m_pCAInterface->GetError());

err.SetText("RpcInit() failed");

TMERRMSG(TMCAChannel, err);
}
}

bei der makierten Zeile erhalte ich aber folgende Fehlermeldung:

cannot convert __va_list_tag* to __va_list_tag [1] in initialization

kann mir da jemand helfen???
 
du programmierst hier c++ ... du kannst nicht einfach so ne referenz übergeben wie das bei java der fall ist ... du musst einen pointer übergeben ...
 
@foexle,

danke für deine Hilfe hat jetzt funktioniert.

Was mich nur wundert ist das es (laut Aussage meiner Kollegen) auf SLES 8 so funktioniert hat.
 
wenn du mit gnu compiler compelierst, ist das os im hintergrund egal :>
 
du programmierst hier c++ ... du kannst nicht einfach so ne referenz übergeben wie das bei java der fall ist ... du musst einen pointer übergeben ...

Das kann man so allgemein nicht sagen. In C++ wurden doch u.a. deshalb Referenzen eingeführt, um nicht mit Pointer hantieren zu müssen, aber dennoch deren Vorteile(kein komplettes Objekt muss auf den Stack) zu behalten.
Referenzen als Parameterübergabe sind ohne Weiteres möglich. Das hier funktioniert z.B. problemlos:
Code:
#include <iostream>
using namespace std;

class foo
{
	public:
	foo() {
		n = 42;
	}
	void test() {
		cout << "test" << endl;
	}
	int n;	
};

void refFunc(foo& f)
{
	cout << f.n << endl;
	f.test();
	f.n = 23;
}

int main(int argc,char **argv)
{
	foo f;
	refFunc(f);
	cout << f.n << endl;
	return 0;
}

OT: kompilieren.
 
Zuletzt bearbeitet:

Ähnliche Themen

Problem mit HSPA+ Modem Huawei E353 - Installation unmöglich?

Windows clients können nicht mehr auf lange laufendes System zugreifen

Bash Skript: [[: not found Fehler

dovecot und postfix Konfiguration Problem

NagiosGrapher 1.7.1 funktioniert nicht

Zurück
Oben