Невозможно использовать статическую переменную C ++ в Android NDK - PullRequest
0 голосов
/ 28 мая 2018

У меня есть следующий класс C ++ в Foo.cpp:

#include <string>

using namespace std;

class Foo {
public:
    static int bar;

    static void set(int _bar) {
        Foo::bar = _bar;
    }

    static int get() {
        return bar;
    }
};

int Foo::bar;

Я хочу включить его в свой проект NDK.Я хочу получить доступ к Foo :: bar в моей конечной точке NDK, которая реализует собственный метод, например:

#include "Foo.cpp"

Они оба расположены в одной папке, в одной библиотеке (функция smae add_library в CMakeLists.текст).Однако, когда я компилирую код, он заявляет, что там было multiple definition of Foo::bar, и указывает на конечную точку NDK как на место, где статическая переменная была впервые определена.

Я попытался поместить весь класс Foo вПространство имен выглядит так:

namespace {
    // The above class Foo here
}

Он скомпилировался, но вышел, как только я запустил приложение.Как это исправить?Спасибо!

У меня есть фон Java, поэтому я ожидаю что-то похожее на "обычную" статическую Java.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...