Zdravím všechny, mám dotaz. Vytvořil jsem si jednu větší třídu a v ní mám mimo jiné nějaké enumerace, které mám jak podle internetu, tak podle literatury deklarovány správně. Také tam mám členskou funkci, která ony enumerace využívá, problém jsem zjednodušil na následující kód. Pro překlad kódu využívám gcc/g++.
digit.hpp
#ifndef DIGITHPP
#define DIGITHPP
#include <QLabel>
class LDigit : public QLabel{
Q_OBJECT
public:
void function(LDigit::MinimumSize size);
enum MinimumSize {
Minimal = 1,
Medium = 2,
Maximal = 3
};
private:
};
#endif
digit.cpp
#ifndef LDIGITCPP
#define LDIGITCPP
#include <iostream>
#include "ldigit.hpp"
#include <QVBoxLayout>
#include <QHBoxLayout>
using namespace std;
void LDigit::function(LDigit::MinimumSize s){
cout << "Parameter of this function has value called ";
if (s==LDigit::Medium){
cout << "Medium" << endl;
}
else if (s==LDigit::Minimal){
cout << "Minimal" << endl;
}
else if (s==LDigit::Maximal){
cout << "Maximal" << endl;
}
}
#endif
main.cpp
#include <iostream>
#include <QApplication>
#include "ldigit.hpp"
using namespace std;
int main(int argc, char * argv[]){
LDigit::MinimumSize s =LDigit::Medium;
if (s==LDigit::Medium){
cout << "Medium" << endl;
}
else if (s==LDigit::Minimal){
cout << "Minimal" << endl;
}
else if (s==LDigit::Maximal){
cout << "Maximal" << endl;
}
return 0;
}
Přesto se při kompilaci objeví chyba, že MinimumSize není deklarováno:
In file included from ldigit.cpp:5:0:
ldigit.hpp:12:25: error: ‘LDigit::MinimumSize’ has not been declared
ldigit.cpp:11:6: error: prototype for ‘void LDigit::function(LDigit::MinimumSize)’ does not match any in class ‘LDigit’
ldigit.hpp:12:8: error: candidate is: void LDigit::function(int)
make: *** [ldigit.o] Error 1
Tušíte, kde je chyba?
Ona to bude nějaká hloupost, ale už nad tím vyšívám celé odpoledne.
Díky všem za odpovědi.