Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > C++ static class members


Автор: inline 6.1.2008, 22:39
Код

#include <iostream>

class Test {
    public:
        static int foo() {
            x = 10; return x;
        }
    private:
        static int x;
};

int main() {
    std::cout << Test::foo() << std::endl;
}

Код

g++ -o t t.cpp
/tmp/cc2cJKlq.o: In function `Test::foo()':
t.cpp:(.text._ZN4Test3fooEv[Test::foo()]+0x5): undefined reference to `Test::x'
t.cpp:(.text._ZN4Test3fooEv[Test::foo()]+0xe): undefined reference to `Test::x'
collect2: ld returned 1 exit status

wtf?

Автор: Daevaorn 6.1.2008, 22:44
Добавь после определения класса
Код

int Test::x = 0;

Автор: inline 6.1.2008, 22:51
Не работает, это же закрытый член.

Код

t.cpp:12: error: expected constructor, destructor, or type conversion before ‘=’ token

Автор: Alek86 6.1.2008, 23:06
Код
class Test {
public:
  static int foo(){
    x = 10; return x;
  }
private:
  static int x;
};

int Test::x = 0;

int main() {
  std::cout << Test::foo() << std::endl;
}


VS 2005 компилит

Автор: MAKCim 6.1.2008, 23:51
Цитата(inline @  6.1.2008,  22:51 Найти цитируемый пост)
Не работает, это же закрытый член.

все должно работать

Автор: MTWizard 7.1.2008, 01:06
Только что скомпилил код Alek86 на gcc-3.4.5. Нет проблем. Так что просто где-то опечатка.

Автор: inline 7.1.2008, 09:21
Все заработало, спасибо.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)