La résolution de “seulement static const partie intégrante de membres de données peuvent être initialisées dans une classe” erreur de compilation

Suivantes pour la création d'un Objet Global est entraînant des erreurs de compilation.

#include "stdafx.h" 
#include <iostream> 

using namespace System; 
using namespace std;    
#pragma hdrstop 

class Tester;


void input();

class Tester
{
    static int number = 5;

public:

    Tester(){};
    ~Tester(){};

    void setNumber(int newNumber)
    {
        number = newNumber;
    }

    int getNumber()
    {
        return number;
    }
}

Tester testerObject;

void main(void)
{
    cout << "Welcome!" << endl;

        while(1)
        {
            input();
        }
}

void input()
{
    int newNumber = 0;

    cout << "The current number is " << testerObject.getNumber();
    cout << "Change number to: ";

        cin >> newNumber;

    cout << endl;

    testerObject.setNumber(newNumber);

    cout << "The number has been changed to " << testerObject.getNumber() << endl;
}

Voici les erreurs de compilation:

1>------ Build started: Project: test, Configuration: Debug Win32 ------
1>Compiling...
1>test.cpp
1>.\test.cpp(15) : error C2864: 'Tester::number' : only static const integral data members can be initialized within a class
1>.\test.cpp(33) : error C2146: syntax error : missing ';' before identifier 'testerObject'
1>.\test.cpp(33) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>.\test.cpp(49) : error C2039: 'getNumber' : is not a member of 'System::Int32'
1>        c:\windows\microsoft.net\framework\v2.0.50727\mscorlib.dll : see declaration of 'System::Int32'
1>.\test.cpp(55) : error C2039: 'setNumber' : is not a member of 'System::Int32'
1>        c:\windows\microsoft.net\framework\v2.0.50727\mscorlib.dll : see declaration of 'System::Int32'
1>.\test.cpp(57) : error C2039: 'getNumber' : is not a member of 'System::Int32'
1>        c:\windows\microsoft.net\framework\v2.0.50727\mscorlib.dll : see declaration of 'System::Int32'
1>Build log was saved at "file://c:\Users\Owner\Documents\Visual Studio 2008\Projects\test\test\Debug\BuildLog.htm"
1>test - 6 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
  1. Comment puis-je créer une Classe Globale
    Objet correctement, comme j'ai tenté
    ici.
  2. Et comment puis-je régler ce problème "seulement statique
    const partie intégrante de membres de données peut être
    initialisé au sein d'une classe"
  3. Et, fondamentalement, comment puis-je corriger le reste
    des erreurs afin que je puisse obtenir ce à
    compiler?

J'ai, comme la déclaration Mondiale Classe les Objets à portée de fichier (j'ai, comme la déclaration de toutes les variables globales à la portée de fichier) parce que quand je créer des fichiers source et de faire "extern" et tout ce que cela devient extrêmement compliqué et ne fonctionne jamais pour moi. Bien que, je ne veux comprendre comment le faire finalement... il me semble qu'à chaque tutoriel, je regarde ne compile pas bien, et qu'il compile je n'ai aucune idée de comment recréer!

Si je peux obtenir cette compiler...alors je peux réussir à apprendre comment faire cela. Donc, si quelqu'un peut réécrire le ci-dessus à l'endroit où elle a littéralement des copies & colle dans Visual C++ Express 2008 et les travaux je vais enfin être en mesure de comprendre comment le recréer. Je suis très contente de voir le correctif de ce! C'est juste que je ne peux pas obtenir des Objets Globaux à l'œuvre! Toutes les autres informations sur le déclarant Mondial les Objets de la Classe...ou quelque chose d'autre est la bienvenue!

InformationsquelleAutor OneShot | 2009-01-31