Mi a baj ezzel a c++ kóddal?
Hibaüzenet:
Undefined reference to Vonal::Vonal(double)
Két napja kezdtem c++-ban programozni, szóval meglehetősen kezdő vagyok. Egy tutorial videóban láttam ezt a példát, konkrétan ezt, 8-szor néztem végig a tutorialt, mindent pontosan lemásoltam, fejből tudom a példát, a srác le tudta fordíttatni a compiler-rel, én nem tudom. Codeblocks-ot használok. Mit néztem el? Mit rontottam el? Mi más?
Köszi előre is a segítséget. Olyan jó lenne ezt megoldani, mert elég jó memóriám van, és eddig marhára gyorsan haladtam, de most elakadtam. Jó lenne normálisan megtanulni az objektumorientáltságot.
Main:
#include <iostream>
#include "Vonal.h"
using namespace std;
int main() {
Vonal v(10);
cout << v.getHossz() << endl;
return 0;
}
header:
#ifndef VONAL_H
#define VONAL_H
class Vonal {
public:
Vonal();
Vonal(double hossz);
double getHossz() const;
private:
double hossz;
};
#endif
class kifejtés:
#include "Vonal.h"
Vonal::Vonal() {
};
Vonal::Vonal(double hossz) {
this->hossz = hossz;
}
double Vonal::getHossz() const {
return hossz;
}
"Gondolom nem fordítottad hozzá a vonal.cpp fájlt."
Leköteleznél, hogyha ezt kifejtenéd bővebben. Hogy tudom "hozzá fordítani" a vonal.cpp fájlt?
Köszönöm előre is!
Mint már említettem rendkívül kezdő vagyok még.
Hát, én nem sokat értek az egészből, meg a C++ nyelvet sem ismerem, de ezzel a kóddal te sem könnyítetted meg az életemet. Amennyire felfogtam, ez két fájl tartalma, ravaszul kommentjelek nélküli megjegyzésekkel elkülönítve. Arra, ha agyonütnek, se tudok rájönni, hogy a „class kifejtés:”-sel jelzett rész tulajdonképpen hová való, és minek kell bele az #include "Vonal.h" sor. Az utóbbit elhagyva végül a programba raktam, de ugyanúgy elfér a headerben is -- aki ért hozzá, biztosan tudja, mit kéne vele csinálni voltaképpen. Nálam így ütött ki a végeredmény (hangsúlyozom, hogy csak félig tudom, mit csinálok, de lefordul, és a jelek szerint működik is):
// a Vonal.h fájl:
#ifndef VONAL_H
#define VONAL_H
class Vonal {
public:
Vonal();
Vonal(double hossz);
double getHossz() const;
private:
double hossz;
};
#endif
// a program, mondjuk valami.cpp:
#include <iostream>
#include "Vonal.h"
using namespace std;
int main() {
Vonal v(10);
cout << v.getHossz() << endl;
return 0;
}
Vonal::Vonal() {};
Vonal::Vonal(double hossz) {this->hossz = hossz;}
double Vonal::getHossz() const {return hossz;}
Köszi!
A vonal.cpp a class kifejtése, pontosabban a class függvényeinek kifejtése. A vonal.h a class és a benne található függvények prototípusa. Létezik egy main.cpp is, ami pedig a fő fájl a fő main függvénnyel. Ahogy te csináltad, úgy rájöttem a megoldásra.
Elvileg három részre kell bontani, de te a main fájlba bemásoltad a függvény kifejtéseket. Én meg egyszerűen csak include-oltam a class függvényeinek kifejtését, a kettő ugyanúgy működik. Tehát hozzáadtam felülre a main.cpp-be ezt a sort:
#include "Vonal.cpp"
De a példában én nem láttam ilyet hozzáadva, viszont logikus, hogy kell. Köszi, hogy foglalkoztál vele!
"cpp-t sosem includeolunk, csak h-t (kivéve ha esetleg templatet írsz)"
Az csodálatos, de csak így működött, másképpen nem.
Vonal::Vonal(double hossz) {this->hossz = hossz;}
php programozó készítette a c++ tutoriált?
inicializáló lista?
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!