Registreer FAQ Berichten van vandaag


Ga terug   Scholieren.com forum / Technologie / Software & Hardware
Reageren
 
Topictools Zoek in deze topic
Oud 29-12-2003, 18:02
Dr HenDre
Avatar van Dr HenDre
Dr HenDre is offline
Ik ben aan het expirimenteren met het werken met losse modules. Nu heb ik een project in MSVC6++ bestaande uit 3 bestanden nl

abc.h
Code:
class vkv
{
public:
	void coeff(double aa, double bb, double cc);
	bool losOp();
	
	double wortel1() const
	{
		return x1;
	}
	
	double wortel2() const
	{
		return x2;
	}
private:
	double a, b, c, x1, x2;
};
abcimpl.cpp
Code:
#include <cmath>
#include "abc.h"

void vkv::coeff(double aa, double bb, double cc)
{
	a = aa;
	b = bb;
	c = cc;
}

bool vkv::losOp()
{
	double D = b * b - 4 * a * c;
	if (a == 0 || D < 0)
	{
		return false;
	}
	double wD = sqrt(D);
	x1 = (-b + wD)/(2 * a);
	x1 = (-b - wD)/(2 * a);
	return true;
}
abcapp.cpp
Code:
#include <iostream>
#include "abcimpl.cpp"
using namespace std;

int main()
{
	double a, b, c;
	cout << "Typ a, b, en c in: ";
	cin >> a >> b >> c;
	vkv v;
	v.coeff(a, b, c);
	if (v.losOp())
	{
		cout << "Wortels: " << v.wortel1()
			 << " " << v.wortel2() << endl;
	}
	else
		cout << "Geen reele wortels.\n";
	return 0;
}
Nu gaat het compilen goed, maar bij het linken krijg ik 3 erros:

Code:
Compiling...
abcimpl.cpp
Linking...
abcapp.obj : error LNK2005: "public: void __thiscall vkv::coeff(double,double,double)" (?coeff@vkv@@QAEXNNN@Z) already defined in abcimpl.obj
abcapp.obj : error LNK2005: "public: bool __thiscall vkv::losOp(void)" (?losOp@vkv@@QAE_NXZ) already defined in abcimpl.obj
Debug/abcformule.exe : fatal error LNK1169: one or more multiply defined symbols found
De tips van msdn hebben niet echt geholpen
Iemand een idee
Met citaat reageren
Advertentie
Oud 30-12-2003, 16:13
Speedo
Speedo is offline
Eej,

wat je zou kunnen proberen is een conditionele compilatie

vb. (bij conventie:-)
#if !defined __ABC_H__
#define __ABC_H__
// jouw-klassedefinitie
#endif // !__ABC_H__

probeer dit eerst ns en kijk wat de preprocessor dan zegt. Daarna zien we wel verder
Met citaat reageren
Oud 30-12-2003, 16:18
Speedo
Speedo is offline
Ownee ik zie t al (DOM dat ik t niet meteen zag)

je moet alleen je h-file #include-n (geloof dat t bij jouw abc.h) heette.

En btw. zoek naar een meer intressante oplossing voor een vierkantsvergelijking. Experimenteer maar eens met de reststelling en de factorstelling. Daarmee kun je je klasse makkelijker uitbreiden naar polynoomvergelijkingen. En maak dr een template van zodattie niet alleen double's maar bijvoorbeeld ook integers en misschien later ook complexe getallen kan accepteren. Welk boek gebruik je trouwens om c++ uit te leren. Die van Leen Ammeraal of hoe heettie ook weer?

Tip: The C++ Programming Language (Bjarne Stroustrup is beter en vollediger. Meneer Ammeraal snapt bijvoorbeeld niet het verschil tussen een conditionele expressie en een exceptie-handler: de kneus).

suc7
Met citaat reageren
Oud 30-12-2003, 17:06
Screaming Slave
Screaming Slave is offline
juist. hoe beter c++ leren dan van de persoon die het bedacht heeft
Met citaat reageren
Oud 30-12-2003, 17:17
Dr HenDre
Avatar van Dr HenDre
Dr HenDre is offline
hoezo alleen de header includen? Als ik nog een 3de bestand heb dan wordt dat nergens opgenomen
Met citaat reageren
Oud 30-12-2003, 17:25
Screaming Slave
Screaming Slave is offline
tuurlijk wel, msvc compilet de files gewoon een voor een tot object files en linkt ze daarna met gebruikte libraries tot een executable.
Met citaat reageren
Oud 30-12-2003, 17:29
deathz0rz
deathz0rz is offline
note: je hebt:

x1 = (-b + wD)/(2 * a);
x1 = (-b - wD)/(2 * a);
__________________
Ooit. Dan.
Met citaat reageren
Oud 30-12-2003, 18:54
Dr HenDre
Avatar van Dr HenDre
Dr HenDre is offline
Citaat:
deathz0rz schreef op 30-12-2003 @ 18:29:
note: je hebt:

x1 = (-b + wD)/(2 * a);
x1 = (-b - wD)/(2 * a);
how, thnx
Met citaat reageren
Advertentie
Reageren


Regels voor berichten
Je mag geen nieuwe topics starten
Je mag niet reageren op berichten
Je mag geen bijlagen versturen
Je mag niet je berichten bewerken

BB code is Aan
Smileys zijn Aan
[IMG]-code is Aan
HTML-code is Uit

Spring naar


Alle tijden zijn GMT +1. Het is nu 07:13.