C++ statique de la surcharge d'opérateur
Est-il possible de surcharger la classe C++ opérateurs dans le contexte statique? par exemple,
class Class_1{ ... }
int main()
{
Class_1[val]...
}
Devrait
J'allais avoir le rendement des valeurs entières, mais les types sont très bien.
En C++, les types ne peuvent pas être représentés dans le système de type (il n'y a qu'
Class_1[val]
rendement d'un type? Comme vous attendez-vous à faire Class_1[val] v;
?J'allais avoir le rendement des valeurs entières, mais les types sont très bien.
En C++, les types ne peuvent pas être représentés dans le système de type (il n'y a qu'
std::type_id
) et je ne peux pas penser à tout opérateur qui peut être surchargé de manière statique. Je suggère, au lieu de se demander si votre idée de la mise en œuvre est faisable en C++, vous présente la réelle problème c'était dans le but de résoudre. Quelqu'un pourrait être en mesure de suggérer une possible mise en œuvre.
OriginalL'auteur jameszhao00 | 2009-09-07
Vous devez vous connecter pour publier un commentaire.
Si vous êtes à la recherche pour la métaprogrammation à l'aide de l'opérateur: une Telle chose n'est pas possible - le haut-opérateurs utilisent des valeurs de l'exécution, et non pas sur le temps de compilation des valeurs.
Vous pouvez utiliser
boost::mpl
pour cela, et au lieu d'utiliser le haut-opérateurs, l'utilisation de ses modèles, commeat
pourop[]
,plus<a, b>
pourop+
etc.OriginalL'auteur Johannes Schaub - litb
Je ne crois pas que c'est possible, mais je peux me tromper sur ce front. Je voudrais vous demander pourquoi vous voulez le faire bien. Plutôt que d'effectuer des opérations sur une classe à la place d'instances, peut-être vous avez juste besoin d'un exemple tout au long de votre application? Dans ce cas, vous devriez probablement utiliser des le pattern singleton.
OriginalL'auteur Samir Talwar
Si vous voulez dire que l'opérateur fonctionne à une classe, de la Pas de. Qui n'a pas de sens, c'est comme de dire
operator +
peut opérateur surint
oudouble
. Les opérateurs sont sucre syntaxique pour les fonctions et ils opèrent sur les varibles(valeurs) pas types.[]
.Yep, en ajoutant à @jave.web commentaire: il ne peut certainement faire sens dans les cas quand il y a des données dans la statique de la portée de la classe. (L'OP mentionne également la statique de la portée explicitement.) Donc, pas avec la simple arithmétique, comme dans votre exemple, mais des trucs comme [], (), <<, >> etc. pourrait être parfait sucre syntaxique pour toute sorte de complexe gestionnaire de classes, trop, sans forcer une instance du singleton.
OriginalL'auteur AraK
Pas, les opérateurs ne peuvent pas être membres statiques d'une classe. Utilisez un régulier de la fonction statique à la place.
OriginalL'auteur moonshadow