В C++ можно ли пометить переменную-член класса как extern?Возможно использование переменной extern в классах?
Могу ли я
class Foo {
public:
extern string A;
};
где строка А определен в другом заголовочном файле, который я включаю?
В C++ можно ли пометить переменную-член класса как extern?Возможно использование переменной extern в классах?
Могу ли я
class Foo {
public:
extern string A;
};
где строка А определен в другом заголовочном файле, который я включаю?
Если я правильно понял ваш вопрос и комментарий правильно, вы ищете static data members
Объявляем поле static
:
// with_static.hpp
struct with_static
{
static vector<string> static_vector;
};
Определить его в один БПД (± .cpp
файл) только:
// with_static.cpp
vector<string> with_static::static_vector{"World"};
Тогда вы можете использовать его. Обратите внимание, что вы можете использовать class::field
и object.field
обозначения и все они относятся к одному объекту:
with_static::static_vector.push_back("World");
with_static foo, bar;
foo.static_vector[0] = "Hello";
cout << bar.static_vector[0] << ", " << with_static::static_vector[1] << endl;
выше должен печатать Hello, World
Вектор составляет около 50 000 записей, и я хочу инициализировать его в коде (например, иметь вектор v = {"first_word", "second_word ... «пятьдесят тысячное слово»}). Поскольку он так длинный, я хочу, чтобы его можно было объявить в другом файле. Поэтому у меня есть Foo.h и Foo.cpp; есть ли способ сохранить переменная члена в * другом * файле? – nilcit
Да, см. редактирование. – krzaq
Я не уверен, что полностью понимаю решение. Я хочу, чтобы объявить static_vector в файле with_static.hpp (как и вы), но Я не хочу, чтобы инициализация была в файле with_static.cpp. Я хочу, чтобы что-то вроде static_vector = {"hello", "world"} в * другом * файле. Возможно ли это – nilcit
Это не так. Чего вы пытаетесь достичь? Может быть, вы ищете статические переменные-члены? – krzaq
У меня есть огромный вектор, который я хотел бы включить в исполняемый файл вместо того, чтобы читать его, всякий раз, когда я создаю экземпляр объекта. Я рассмотрю статические переменные-члены. Есть ли способ определить их в другом файле? –
nilcit
Да, на самом деле вы почти обязаны. – krzaq