Ошибка компоновщика: неопределенная ссылка на

Я продолжаю получать следующее:

[Ошибка компоновщика] неопределенная ссылка на `ComponentClass :: POSIZIONENULLA ‘
ld вернул 1 статус выхода
[Ошибка сборки] [main.exe] Ошибка 1

Может ли кто-нибудь помочь мне с этим. Вот мой код:

ComponentClass.h

#ifndef _ComponentClass_H
#define _ComponentClass_H

template< class T>
class ComponentClass
{
public:

typedef ComponentClass* posizione;
static const posizione POSIZIONENULLA;
ComponentClass();
};

template< class T>
ComponentClass<T>::ComponentClass()
{
const posizione POSIZIONENULLA=(ComponentClass*)-1;
}
#endif

ProjectClass.h

#ifndef _ProjectClass_H
#define _ProjectClass_H

#include "ComponentClass.h"
template<class T>
class ProjectClass
{
public:
typedef typename ComponentClass<T>::posizione posizione;ProjectClass();
posizione dummyFunction();

private:
posizione dummyposition;

};

template<class T>
ProjectClass<T>::ProjectClass()
{

dummyposition=   (posizione)ComponentClass<T>::POSIZIONENULLA;
}

template<class T>
typename ProjectClass<T>::posizione ProjectClass<T>::dummyFunction()
{
posizione tempPosition;
tempPosition=(posizione)ComponentClass<T>::POSIZIONENULLA;
return tempPosition;
}
#endif

main.cpp

#include <cstdlib>
#include <iostream>
#include <string>

#include "ProjectClass.h"
using std::cout;
using std::endl;
using std::string;

int main(int argc, char *argv[])
{
ProjectClass<int> pc;
}

0

Решение

Этот код на самом деле не делает ничего полезного:

template< class T>
ComponentClass<T>::ComponentClass()
{
const posizione POSIZIONENULLA=(ComponentClass*)-1;
}

Он просто объявляет локальную переменную в конструкторе, инициализирует ее и затем не использует ее. Он ничего не делает с вашим static const posizione POSIZIONENULLA,

Я думаю, что вы имели в виду:

template< class T>
const typename ComponentClass<T>::posizione ComponentClass<T>::POSIZIONENULLA=(ComponentClass*)-1;

Это должно исправить вашу ошибку ссылки. Как примечание стороны, используя -1 в качестве «специального» значения указателя не очень хорошая идея, как другие отмечали в комментариях выше

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]