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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> unresolver external 
V
    Опции темы
Graf_h
Дата 11.5.2009, 14:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 482
Регистрация: 18.10.2007
Где: г. Ровно, Украина

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



Привет, что за ошибка? делаю статический вектор и когда пробую вызвать его в статической функции, выдает следующую ошибку:
V_Utility.obj : error LNK2001: unresolved external symbol "public: static class std::vector<int,class std::allocator<int> > V_Utility::pool" (?pool@V_Utility@@2V?$vector@HV?$allocator@H@std@@@std@@A)


Код

class V_Utility{
public:
    static std::vector<int> pool;
            ...
           static V_ObjectEx* getObject();

}

V_ObjectEx* V_Utility::getObject(){
    
    int size=pool.size();
    return NULL;
}


Это сообщение отредактировал(а) Graf_h - 11.5.2009, 14:37


--------------------
Иногда переменная - это просто переменная
PM MAIL ICQ   Вверх
zim22
Дата 11.5.2009, 14:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


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

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



статические переменные должны быть определены вне класса.
Код

class V_Utility{
public:
  static std::vector<int> pool;            
  static V_ObjectEx* getObject();
};

std::vector<int> V_Utility::pool;


Это сообщение отредактировал(а) zim22 - 11.5.2009, 14:40


--------------------
PM MAIL   Вверх
Graf_h
Дата 11.5.2009, 14:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 482
Регистрация: 18.10.2007
Где: г. Ровно, Украина

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



zim22, у меня так и есть: вот 
хедер
[code=cpp]
#pragma once

#include "V_ObjectEx.h
Код

"
#include "V_Librarry.h"
#include <vector>

class V_Utility{
public:
    static std::vector<int> pool;
    static const float IN_RAD;
    static V_Librarry* ref_lib;
    static V_ObjectEx* getObject(){
        
        return NULL;
    };
    V_Utility(void);
    ~V_Utility(void);
};



а вот сурс

Код

#include "StdAfx.h"
#include "V_Utility.h"
#include <math.h>
#include <iostream>
#include <vector>

std::vector<int> V_Utility::pool;
const float V_Utility::IN_RAD=(float) 0.017453292519;

V_Librarry* V_Utility::ref_lib=NULL;


V_Utility::V_Utility(void){

}

V_Utility::~V_Utility(void){
}

V_ObjectEx* V_Utility::getObject(){
int size=pool.size();
    return NULL;
}






--------------------
Иногда переменная - это просто переменная
PM MAIL ICQ   Вверх
zim22
Дата 11.5.2009, 15:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


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

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



header.h
Код

#pragma once

#include <vector>

class V_Utility{
public:
    static std::vector<int> pool;
    static const float IN_RAD;
    static int* ref_lib;
    static int* getObject();
    V_Utility(void);
    ~V_Utility(void);
};


source.cpp
Код

#include "header.h"

std::vector<int> V_Utility::pool;
const float V_Utility::IN_RAD=(float) 0.017453292519;
int* V_Utility::ref_lib = NULL;


V_Utility::V_Utility(void){}

V_Utility::~V_Utility(void){}

int* V_Utility::getObject(){
  int size=pool.size();
  return NULL;
}


main.cpp
Код

#include "header.h"


int main()
{
  V_Utility v;
  return 0;
}



Добавлено через 2 минуты и 43 секунды
Graf_h, мне не нравится, что у вас определение функции getObject в двух местах: и в хедере, и в cpp. Может из-за этого ошибка была...


--------------------
PM MAIL   Вверх
Graf_h
Дата 11.5.2009, 15:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 482
Регистрация: 18.10.2007
Где: г. Ровно, Украина

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



zim22, это я убрал! я пробовал и так и так! тепер определение в сурсе!   V_Utility v; мне не подходит, так как идея заключается в том что вектор pool хранит в себе все обьекты которые я создаю, чтобы не создавать постоянно, тоесть это как бы пул обьектов, поэтому я его сделал статиком, и с любого места проги я могу взять обьект с пула, и добавить в пул. но ка только в статической функции вызываю pool так сразу дает ошибку



--------------------
Иногда переменная - это просто переменная
PM MAIL ICQ   Вверх
zim22
Дата 11.5.2009, 16:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


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

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



Цитата(Graf_h @  11.5.2009,  15:18 Найти цитируемый пост)
 но ка только в статической функции вызываю pool так сразу дает ошибку

у меня нет ошибок.

попробуйте создать новый проект из нескольких файлов, которые я указал в посте выше: header.h, source.cpp, main.cpp
и в файле main.cpp добавьте эту строчку:
Код

int *res = V_Utility::getObject();

ошибок нет. статическая функция успешно отрабатывает.


--------------------
PM MAIL   Вверх
Graf_h
Дата 11.5.2009, 18:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 482
Регистрация: 18.10.2007
Где: г. Ровно, Украина

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



zim22, уже заработало! Блин, честно, для меня остается загадкой, почему дало эту ошибку. Спасибо за помощьsmile


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

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

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

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

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


 




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


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

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