Я пытаюсь понять классы на C++ и разработать некоторые подобные классы, которые я видел в Python. Вот код:C++: конструктор с пользовательскими типами
#include <iostream>
#include <cmath>
using namespace std;
/*============================================================================*/
/* Define types
/*============================================================================*/
class none_type;
class bool_type;
class int_type;
struct identifier;
/*============================================================================*/
/* Define none type
/*============================================================================*/
class none_type {
public:
none_type() { /* constructor */ };
~none_type() { /* destructor */ };
}; /* none_type */
/*============================================================================*/
/* Define bool type
/*============================================================================*/
class bool_type {
private:
bool base;
public:
bool_type() { base = false; };
~bool_type() { /* destructor */ };
bool_type(bool init) { base = bool(init); };
bool_type(int init) { base = bool(init); };
bool_type(long init) { base = bool(init); };
bool_type(float init) { base = bool(init); };
bool_type(double init) { base = bool(init); };
bool_type(bool_type init) { base = bool(init.base); };
bool_type(int_type init) { base = bool(init.base); };
int get() { cout << base << endl; };
}; /* bool_type */
/*============================================================================*/
/* Define int type
/*============================================================================*/
class int_type {
private:
long base;
public:
int_type() { base = 0; };
~int_type() { /* destructor */ };
int_type(bool init) { base = long(init); };
int_type(int init) { base = long(init); };
int_type(long init) { base = long(init); };
int_type(float init) { base = long(init); };
int_type(double init) { base = long(init); };
int_type(bool_type init) { base = long(init.base); };
int_type(int_type init) { base = long(init.base); };
int get() { cout << base << endl; };
}; /* int_type */
Когда я пытаюсь скомпилировать его, g++
говорит, что все мои конструкторы, которые используют свои собственные типы являются недействительными. Не могли бы вы объяснить, что случилось, пожалуйста? Я определил прототипы классов, что еще мне делать? Заранее спасибо!
Вам не нужно ставить ',' в конце определения функции. И узнайте о списке инициализации конструктора ... –
Я удалил точки с запятой; который ничего не решает. Кажется, что не так много ситуаций, когда вы __must__ удаляете точку с запятой в конце строки в C/C++. – ghostmansd
Вы вводите в заблуждение «определения» и «декларации». –