C++ Verstehe ich net

roker002

Commander
Registriert
Dez. 2007
Beiträge
2.106
Schreibe ein MFC programm. hab 2 Klassen. Die ein Klasse ist reine Oberfläche die andere ist eine ODBC klasse. Die Oberflächeklasse erbt von ODBC Klasse.

Code der MFC Klasse:
Code:
void Cxxx::OnBnClickedOk()
{
	Ctest *m_test = new Ctest(NULL);
	m_test->OpenConn();
	if(!m_test->m_ConOpen)
	{
		MessageBox(_T("Verbindung mit DB ist fehlgeschlagen."));
	}
}

Code der ODBC Klasse:

Code:
void OpenConn()
{
	Ctest *m_pSet = new Ctest(NULL);

	if(m_pSet->Open(CRecordset::dynaset,NULL, CRecordset::readOnly))
	{
		m_pSet->m_ConOpen = true;
	}else{
		m_pSet->m_ConOpen = false;
	}
}

m_pSet ist eine Public Var der Klasse ODBC.

Naja das Problem ist. Ich kriege die OpenConn nicht initialisiert. Bekomme immer den LNK Probleme

Kenn mich mit OOP aus aber mit C++ bin ich da noch Anfänger.

najut.. ich warte dann.
 
Zuletzt bearbeitet:
roker002 schrieb:
Die Oberflächeklasse erbt von ODBC Klasse.
[...]
Kenn mich mit OOP aus[...]
Das glaube ich Dir nicht, wenn die Oberfläche wirklich von der ODBC-Klasse erbt... ist nicht böse gemeint. Außerdem sieht mir der Code-Schnipsel, bei dem was sichtbar ist, eher nach Komposition als nach Vererbung aus.

Zum einen bräuchten wir mal die exakte Fehlermeldung von Dir, vollständig und im Wortlaut.

Zweitens, sollte es in der OBDC-Klasse nicht vielleicht heißen:

Code:
void [color=red]Klassenname::[/color]OpenConn()

Das würde den Linkerfehler erklären.
 
Ja wegen Linker hab ich mir ach schon gedanken gemacht und selbst drauf gekommen dass ich der Methode keine Klasse beigefügt habe.

Das mit dem Vererben...
erstens habe ich mich da an der falsche Klasse vergriffen :P
zweitens bin wie gesagt noch anfänger in MFC. Hab bisher nur mit C und Java, PHP gearbeitet

Ja das mit dem Vererben hab ich jetzt gelöst! :P

Code:
void Cxxx::OnBnClickedOk()
{
	this->OpenConn();
	if(this->m_ConOpen)
	{
		MessageBox(_T("Verbindung mit DB ist fehlgeschlagen"));
	}

}

Das neue Problem ist... ich bekomme eine Assertion Error. Bild Hier

Code:
void Ctest::OpenConn()
{
	if(this->Open(CRecordset::dynaset,NULL, CRecordset::readOnly))
	{
		this->m_ConOpen = true;
	}else{
		this->m_ConOpen = false;
	}
}
Code:
class Cxxx: public CDialog, Ctest
{


Hab gestern um 1 uhr Nachts Programmiert. Liegt vielleicht daran :D


Kann da jemand weiterhelfen?
 
Zurück
Oben