2017-08-12 2 views
1

I possède une classe A dans "ah":C++ définissant objet statique à l'intérieur de la classe

#include "b.h" 

class A { 
public: 
    static B b; 
} 

Je veux initialiser b dans une autre fonction

Dans "main.cpp":

#include "a.h" 
#include "b.h" 

int main() { 
    .... 
    B A::b = B(arg1, arg2); 

Mais le vérificateur de syntaxe me donne l'erreur: "membre A :: b ne peut pas être défini dans la portée actuelle." Quelle est la bonne façon de faire cela?

+0

par ailleurs, ce n'est pas un bon style de code. vous devriez utiliser le constructeur statique le moins possible. – merito

+0

Pourquoi est-ce? @merito –

+0

car C++ ne définit pas l'ordre de construction de l'objet statique. Vous devriez l'utiliser avec soin. – merito

Répondre

4

Vous pouvez définir la valeur main() mais la définition doit être dans la portée globale:

#include "a.h" 
#include "b.h" 

B A::b; // <<<<<< 

int main() { 
    .... 
    A::b = B(arg1, arg2); 
// ^^^^