Инициализация статических переменных в статической функции приводит к нерешенной - PullRequest
2 голосов
/ 01 мая 2011
class PossibilisticShellClustering
{
public:
    PossibilisticShellClustering(void);
    ~PossibilisticShellClustering(void);
    static void SetParameters(double deltaDistance);
    static  double deltaDistance
};

и я хочу инициализировать статическую переменную deltaDistance в функции SetParameters.Таким образом, в * .cpp файле я написал

void PossibilisticShellClustering::SetParameters(double deltaDistance)
{
    PossibilisticShellClustering::deltaDistance = deltaDistance;    
}

, однако получаю ошибку компоновщика

неразрешенный внешний символ "public: static double PossibilisticShellClustering :: deltaDistance" (? DeltaDistance @ PossibilisticShellClustering @@ 2NA)

Может кто-нибудь сказать мне, почему?

PossibilisticShellClustering.obj

1 Ответ

2 голосов
/ 01 мая 2011

Вам необходимо определить PossibilisticShellClustering::deltaDistance в исходном файле где-то в вашей программе, обычно это файл .cc или .cpp.

double PossibilisticShellClustering::deltaDistance;

То, что у вас есть в теле класса (или было бы, если бы оно было завершено ;), является только объявлением. Члены статических данных также нуждаются в определении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...