2010-06-14 8 views
1

Disons que j'ai un objet. J'assigne cela à un entier. Par exemple, j'ai un constructeur paramétré qui accepte un nombre entier.Puis-je affecter un objet à une variable entière?

MyClass(int Num) 
{ 
    // .. do whatever.. 
} 

MyClass obj1 = 100;//Now, its valid 

De même, dans le cas contraire, l'inverse est-il valable?!.

eg) int Number = obj1;//Is it VALID or can be made valid by some tweeks 

EDIT:

Je trouve que cela soit possible en utilisant Fonctions de conversion. Les fonctions de conversion sont souvent appelées "opérateurs de cast" car elles (avec les constructeurs) sont les fonctions appelées lorsqu'un cast est utilisé.

Fonctions de conversion utilisent la syntaxe suivante:

opérateur conversion de type nom()

par exemple) Beaucoup ont expliqué nettement en dessous

Répondre

6

Oui, à condition que l'objet soit implicitement convertible en int, directement ou via un objet intermédiaire.

E.g. Si votre classe a une conversion operator int il travaillerait:

MyClass 
{ 
public: 
    operator int() const { return 200; } 
}; 
0

Oui, vous avez besoin d'ajouter un opérateur de conversion en MyClass

opérateur int();

2

constructeurs C++ de qui ont un seul paramètre effectuer automatiquement la conversion de type implicite. C'est pourquoi la conversion d'int en MyClass fonctionne. Pour créer une conversion de MyClass à int, vous devez définir operator int() dans MyClass.

0

MyClass est pas un entier, vous ne pouvez donc pas faire int Number = obj1; , définir int opérateur() Vous devriez avoir une méthode ou un opérateur (déclaré par d'autres) dans MyClass qui renvoie un int. (int number = obj1.GetNum();)

Questions connexes