Относительно членов данных, объявленных в файле C ++, но не в заголовочном файле - PullRequest
0 голосов
/ 03 мая 2020

Если я создаю глобальную переменную stati c в файле C ++, но не объявляю ее в заголовочном файле, когда я создаю библиотеку из этих файлов, смогу ли я получить к ней доступ (переменная)?

Ответы [ 2 ]

2 голосов
/ 03 мая 2020

Если предположить, что переменная является автономной и определена в области видимости файла (она каким-то образом не является частью class) и что ключевое слово static украшает ее определение, тогда переменная будет доступна в файле в котором это определено. Он не будет доступен по имени из любого другого файла - это точка (или одна из точек) static. Функция в файле, имеющая доступ к нему, может сделать его доступным вне файла, возвращая указатель или ссылку на переменную.

Рассмотрите возможность помещения переменной в анонимное пространство имен вместо того, чтобы делать ее статической; что использование stati c необходимо в C, но не обязательно в современном C ++.

0 голосов
/ 03 мая 2020

Нет, вы не сможете получить доступ к переменной.

Глобальные данные c переменные внутренне связаны , что означает, что к ним нельзя получить доступ даже вне этой единицы перевода (файла) , Так что вы даже не сможете получить к нему доступ в библиотеке.

...