Je ne sais pas comment commander mes fonctions en C++. En C, j'ai simplement placé une fonction qui utilise une autre fonction au-dessous de cette fonction, aussi étroitement que possible - c'est assez commun. Comme ceci:Comment commander des fonctions en C++?
void bar()
{
}
void foo()
{
bar();
}
Cependant, en C++, il existe plusieurs types de fonctions:
- fonctions gratuites
- Fonctions membres privées
- Fonctions membres publiques
- fonctions membres statiques
Je suis actuellement maki ng ma fonction pour fonction de la façon dont ils sont commandés dans le fichier .hpp, par exemple:
class Foo_bar {
public:
Foo_bar();
void foo();
private:
int some_member;
void bar();
Mais maintenant, si le constructeur utilise foo() ou la barre(), ceux-ci seront ci-dessous le constructeur dans la fichier source, incompatible avec ma commande habituelle. Je pourrais bien sûr réorganiser mon en-tête pour en tenir compte:
class Foo_bar {
private:
int some_member;
void bar();
public:
void foo();
Foo_bar();
Mais je pense que c'est un gâchis.
De plus, en Java, à l'opposé de mon premier exemple semble être commun:
void foo()
{
bar();
}
void bar()
{
}
C'est probablement dû au haut vers le bas la pensée commune en POO, contrairement au bas vers le haut la pensée commune programmation procédurale/fonctionnelle. Cependant, avec des fonctions libres qui n'ont pas de prototypes, ce style descendant n'est pas possible.
Est-il même possible de commander des fonctions en C++ de manière cohérente?
Je préfère commander mes fonctions par ce que je travaille - de sorte que lorsque ouvrir un fichier, il est probable que ce que je veux voir est en haut. Cela dit, j'ai beaucoup de pratique à la recherche de ":: methodName" - alors peut-être que ma méthode n'est pas la meilleure;) – sje397
Je ne comprends pas la question. Toutes les fonctions ont des prototypes et vous pouvez déclarer des fonctions libres dans un fichier d'en-tête ou n'importe où ailleurs si vous en avez besoin. Tant que vous avez des déclarations visibles pour toutes les fonctions que vous utilisez, vous pouvez commander des définitions de fonction dans l'ordre que vous choisissez. Qu'est-ce qui vous empêche de commander vos fonctions d'une manière qui vous semble cohérente? –
@Charles: Voir les commentaires de forneo ci-dessous. Apparemment, il pense que l'utilisation de fonctionnalités linguistiques pour ce à quoi elles étaient destinées est mauvaise ...? On dirait qu'il pose essentiellement la question hautement subjective "Je ne veux pas utiliser les fonctionnalités linguistiques disponibles, que me suggérez-vous de faire à la place?" C'est comme dire "Je n'aime vraiment pas les accolades, alors j'essaie d'ajuster 1 phrase par bloc pour les éviter, y a-t-il une manière cohérente de faire cela pour ne jamais avoir à utiliser d'accolades?" et s'attendre à ce que quelqu'un dise "Ouais! si (exp) déclaration; if (sameExp) statement2; vous obtenez 2 stats sans accolades!" Même type de Q. – Loduwijk