Всем привет
Я бы сюда не написал, если бы это не было так важно
А ошибка вот в чем: написал я класс для работы с вершинным буфером, класс для вершины, класс динамического массива. Функции класса динамического массива нельзя использовать в классе буфера вершин - как убрать эту ошибку?
при компиляции выдает ошибки:
Linking... veVertexBuffer.obj : error LNK2001: unresolved external symbol "public: __thiscall veArray<class veVertex>::veArray<class veVertex>(void)" (??0?$veArray@VveVertex@@@@QAE@XZ) veVertexBuffer.obj : error LNK2001: unresolved external symbol "public: __thiscall veArray<class veVertex>::~veArray<class veVertex>(void)" (??1?$veArray@VveVertex@@@@QAE@XZ) veVertexBuffer.obj : error LNK2001: unresolved external symbol "public: class veVertex * __thiscall veArray<class veVertex>::GetArray(void)" (?GetArray@?$veArray@VveVertex@@@@QAEPAVveVertex@@XZ) veVertexBuffer.obj : error LNK2001: unresolved external symbol "public: int __thiscall veArray<class veVertex>::GetLenght(void)" (?GetLenght@?$veArray@VveVertex@@@@QAEHXZ) veVertexBuffer.obj : error LNK2001: unresolved external symbol "public: void __thiscall veArray<class veVertex>::AddToEnd(class veVertex)" (?AddToEnd@?$veArray@VveVertex@@@@QAEXVveVertex@@@Z) veVertexBuffer.obj : error LNK2001: unresolved external symbol "public: void __thiscall veArray<class veVertex>::Release(void)" (?Release@?$veArray@VveVertex@@@@QAEXXZ) fatal error LNK1120: 6 unresolved externals Error executing link.exe.
Все перечисленные выше функции использовались в классе буфера вершин
код классов:
#ifndef _veArray_h_
#define _veArray_h_
template<class T>
class veArray
{
private:
T* pArray;
int iLenght;
int iCursor;
public:
veArray();
veArray(int iSize);
~veArray();
void Expand(int iSize);
void AddToBegin(T Value);
void AddToMiddle(int iNum,T Value);
void AddToEnd(T Value);
void AddGroup(int iNumStart,int iCount,T Value);
void DeleteToBegin();
void DeleteToMiddle(int iNum);
void DeleteToEnd();
void DeleteGroup(int iNumStart,int iCount);
void SetLenght(int iSize);
void SetValue(T Value);
void SetElementValue(int iNum,T Value);
void SetGroupElementValue(int iNumStart,int iCount,T Value);
T* GetArray();
T GetValue(int iNum);
T GetValueToBeginElement();
T GetValueToEndElement();
int GetLenght();
int GetCursor();
T& operator[](int i);
void Release();
};
#endif//_veArray_h_#ifndef _veVertex_h_
#define _veVertex_h_
#define VEVERTEX_FVF (D3DFVF_XYZRHW,D3DFVF_DIFFUSE)
class veVertex
{
private:
float m_fX,m_fY,m_fZ,m_fRHW;
unsigned long m_dwDiffuseColor;
public:
veVertex();
veVertex(float x,float y,float z,float rhw,unsigned long color);
~veVertex();
};
#endif//_veVertex_h_#ifndef _veVertexBuffer_h_
#define _veVertexBuffer_h_
#include "veGraphics.h"
#include "veVertex.h"
#include "veArray.h"
class veVertexBuffer
{
private:
IDirect3DVertexBuffer9 *m_pDirect3DVertexBuffer;
veArray<veVertex> m_VertexArray; //<<<<<-------
void* m_pVertexBuffer;
veGraphics *m_pGraphics;
public:
veVertexBuffer();
veVertexBuffer(veGraphics *pGraphics);
~veVertexBuffer();
void CreateVertexBuffer();
void Render();
void AddVertex(veVertex vertex);
void Shutdown();
};
#endif//_veVertexBuffer_h_пробовал инкапсюляцей - нечего не дало
вместо veArray стл можете не предлагать...
жду ответов...
реализации функций шаблоны должны быть доступны компилятору при компиляции модуля, в котором используются.
хм, так что делать то? =)
ragnaros-alex
>при компиляции выдает ошибки:
>Linking...
Здесь нужно учить, что такое компилятор и что такое линкер. За D3D рановато еще браться.
> LNK2001
Если ввести это в строку поиска на msdn.microsoft.com, то можно узнать, что же это за ошибка такая.
Ах, ну да, еще в http://www.gamedev.ru/faq/ стоит заглянуть.
там разве недоступны?
Wraith
большое спс, ноя знаю что такое компилятор
ragnaros-alex
>большое спс, ноя знаю что такое компилятор
Ну вот осталось только узнать, что такое линкер.
ragnaros-alex
лучше файлики выложи, да и потом даже у меня вроде и шаблоны компилятся хотя я нуб нубом.
а так первая мысль чего-то ты не доподключил.
З.Ы. не пинать.
где лежит реализация методов veArray? положи её в ту же хедер, что и декларацию и всё заработает (если нет других ошибок)
ragnaros-alex
Этот вопрос всплывает с завидной регулярностью.
Въ FAQ
вылысыпыдысты такие вылысыпыдысты...
Тема в архиве.