Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Statyczne elementy klasy w pliku nagłówkowym

Ostatnio zmodyfikowano 2011-02-17 22:14
Autor Wiadomość
absflg
Temat założony przez niniejszego użytkownika
Statyczne elementy klasy w pliku nagłówkowym
» 2011-02-17 16:33:48
W jednym pliku mam klasę:

C/C++
class multib {
    //(...)
    static char index;
    //(...)
};

char multib::index = 0;

a w pliku nagłówkowym:

C/C++
class multib {
    //(...)
    static char index; //1
    //(...)
};

extern char multibool::index; //2

Z żadną z linijek //1 i //2 nie działa, z obydwiema tak samo. Wyświetla zawsze komunikat:
  multiple definition of `multibool::index'
  first defined here
  ld returned 1 exit status
przy kompilacji kodu z załączonym nagłówkiem. Co robić?
P-28319
malan
» 2011-02-17 16:38:26
C/C++
// *.h
class multib {
    //(...)
    static char index;
    //(...)
};
C/C++
// *.cpp
char multib::index = 0;
?
P-28320
absflg
Temat założony przez niniejszego użytkownika
» 2011-02-17 21:25:47
  [Linker error] undefined reference to `multib::index'

Wyświetlane tyle razy, ile było użyte 'index' w pliku z definicją klasy.
P-28337
malan
» 2011-02-17 21:54:58
C/C++
// main.cpp
#include <iostream>
#include "wtf.h"

int main()
{
    Wtf wtf;
   
    std::cout << wtf.get();
}

C/C++
// wtf.h
#ifndef WTF_H
#define WTF_G

class Wtf
{
public:
   
    char get() const;
   
    static char c;
};

#endif

C/C++
// wtf.cpp
#include "wtf.h"

char Wtf::c = '0';

char Wtf::get() const
{
    return c;
}

Log kompilacji:
1>------ Rebuild All started: Project: 3729, Configuration: Debug Win32 ------
1>  wtf.cpp
1>  main.cpp
1>  Generating Code...
1>  3729.vcxproj -> ...\Visual Studio 2010\Projects\3729\Debug\3729.exe
========== Rebuild All: 1 succeeded, 0 failed, 0 skipped ==========

Output:
0
P-28339
absflg
Temat założony przez niniejszego użytkownika
» 2011-02-17 22:14:31
Działa jak powinno. Dziękuję.
P-28342
« 1 »
  Strona 1 z 1