Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> static функции 
:(
    Опции темы
knut
Дата 30.3.2007, 10:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 588
Регистрация: 7.2.2006

Репутация: нет
Всего: нет



Добрый день.
Есть a.h  с глобальной функц. some_func(); и имеется b.cpp
в котором надо вызвать  some_func();
Код

//a.h
static bool some_func();
//a.cpp
bool some_func()
{
  //realize
}
//b.cpp
#include "a.h"
bool  methode()
{
  some_func();
}


но проблема. компилятор ругается.
//error static function bool some_func()  declared but not defined



--------------------
Цитата

Многие вещи нам непонятны не оттого, что наши понятия слабы, а оттого, что данные вещи не входят в круг наших понятий.
PM MAIL   Вверх
Partizan
Дата 30.3.2007, 10:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 4
Всего: 67



файл с реализацией функции надо включить в проект, чтобы он тоже прилинковывался при сборке..

Это сообщение отредактировал(а) Partizan - 30.3.2007, 10:49


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
Fazil6
Дата 30.3.2007, 10:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

Репутация: 35
Всего: 60



Цитата(knut @  30.3.2007,  10:43 Найти цитируемый пост)
но проблема. компилятор ругается.//error static function bool some_func()  declared but not defined

Что не понятно? Компиллятор не видит реализации твоей some_func(). Не вижу проблемы.

Добавлено через 9 минут и 32 секунды
а, ты в разных еденицах компилляции определяшь и используешь... 
эту функцию  можно только в a.cpp у тебя вызывать, потому что она static
PM MAIL   Вверх
knut
Дата 30.3.2007, 11:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 588
Регистрация: 7.2.2006

Репутация: нет
Всего: нет



Partizan,  т.е a.cpp в b.cpp ?


--------------------
Цитата

Многие вещи нам непонятны не оттого, что наши понятия слабы, а оттого, что данные вещи не входят в круг наших понятий.
PM MAIL   Вверх
aldari
Дата 30.3.2007, 11:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 65
Регистрация: 5.3.2007

Репутация: нет
Всего: нет



Эксперементировать тяжело? Зачем всё время спрашивать? Попробуй, потом пиши.

PM MAIL   Вверх
knut
Дата 30.3.2007, 11:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 588
Регистрация: 7.2.2006

Репутация: нет
Всего: нет



Fazil6
если я тебя правельно понял то если  у меня есть статическая
глобалная функциия то я не могу его вызвать его из функции
каторая реализованна в другом файле?(т.е не там где статич.функция)



--------------------
Цитата

Многие вещи нам непонятны не оттого, что наши понятия слабы, а оттого, что данные вещи не входят в круг наших понятий.
PM MAIL   Вверх
Fazil6
Дата 30.3.2007, 11:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

Репутация: 35
Всего: 60



Цитата(knut @  30.3.2007,  11:08 Найти цитируемый пост)
если я тебя правельно понял то если  у меня есть статическаяглобалная функциия то я не могу его вызвать его из функциикаторая реализованна в другом файле?(т.е не там где статич.функция)

да, эту функцию можно вызвать только в той еденице компилляции, в которой она объявлена
PM MAIL   Вверх
Xenon
Дата 30.3.2007, 12:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1529
Регистрация: 12.4.2006

Репутация: 11
Всего: 50



В том-то и заключается ее статичность - область видимости ограничена одним модулем (файлом). 


--------------------
user posted image  
PM MAIL   Вверх
Earnest
Дата 30.3.2007, 19:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 53
Всего: 183



Цитата(knut @  30.3.2007,  12:08 Найти цитируемый пост)
статическая
глобалная функциия 

нонсенс. Либо статическая, либо глобальная.
Грубо говоря, помещая static bool some_func() в h-файл, ты обещаешь, что эта функция будет реализована в каждом файле, куда этот h включается. И это будут разные функции (в смысле адреса).
Т.е. конструкция абсолютно бессмысленная.

Если оставлять вс как есть, просто убери слово static из определения функции, и будет она глобальная.



--------------------
...
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0644 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.