error C2597: référence non conforme à un membre non static
Le
michel

Bonjour,
Soit :
class CTest
{
public:
int m_intTest;
static void TestFunct()
{
m_intTest = 1;
}
};
J'obtiens logiquement :
error C2597: référence non conforme à un membre non static
Mais comment faire pour modifier m_intTest dans ma fonction TestFunct
(que je veux statique) ?
Car si je fais
CTest c;
c.m_intTest = 1;
ça passe à la compil, mais je ne peux qd même pas instancier Ctest à
chaque appel de TestFunct() ?
Merci.
Soit :
class CTest
{
public:
int m_intTest;
static void TestFunct()
{
m_intTest = 1;
}
};
J'obtiens logiquement :
error C2597: référence non conforme à un membre non static
Mais comment faire pour modifier m_intTest dans ma fonction TestFunct
(que je veux statique) ?
Car si je fais
CTest c;
c.m_intTest = 1;
ça passe à la compil, mais je ne peux qd même pas instancier Ctest à
chaque appel de TestFunct() ?
Merci.
Vous pourriez faire de m_intTest une variable statique:
class CTest { public:
static int m_intTest;
static void TestFunct() {
m_intTest = 1;
}
};
Dans ce cas il n'est plus utile d'instancier CTest.
--
Matthias
Merci, mais en fait j'avais essayé et je n'arrive pas à l'utiliser
ailleurs si je la mets en static.
Par exemple dans le Constructeur :
CTest::CTest()
{
m_intTest = 1;
}
j'obtiens :
error LNK2001: symbole externe non résolu "public: static int
CTest::m_intTest" (?@@2HA)
Bon, après divers essais, j'y suis arrivé : il faut que je la définisse
aussi en dehors =>
class CTest
{
public:
CTest();
static int m_intTest;
static void TestFunct()
{
m_intTest = 3;
}
};
int CTest::m_intTest = 2;
CTest::CTest()
{
m_intTest = 1;
}