«Неопределенная ссылка» пытается сослаться на статическое поле - PullRequest
2 голосов
/ 25 февраля 2012

У меня есть это определение для моего класса Test:

#ifndef TEST_H
#define TEST_H

#include <iostream>
#include <cstdlib>
#include <ctime>
#include <fstream>

class Test {
      public:
          static bool testAll(bool debug = false);           
      private:
          static bool testVector2D(bool debug = false);
          static bool testPolygon(bool debug = false);
          static bool testRectangle(bool debug = false);
          static bool testMap(bool debug = false);

          static std::ofstream outStream;
          static std::ifstream inStream;

          static void prepareWriting();
          static void prepareReading();

          const char tempFileName[];
};   

Когда я пытаюсь использовать Test :: outStream или Test :: inStream, например здесь:

void Test::prepareWriting() {
    if (Test::inStream.is_open()) {
        Test::inStream.close();
    }
    Test::outStream.open(testFileName,ios::out); 
}

Iполучить следующее сообщение: "неопределенная ссылка на` Test :: inStream '"

Я прочитал кое-что об инициализации статических членов в файле .cpp, но я не знаю, как это сделать с помощью * 1009 в fstream*

1 Ответ

3 голосов
/ 25 февраля 2012

Вам необходимо определить потоки, в которых вы определяете другие Test методы:

std::ofstream Test::outStream;
std::ifstream Test::inStream;
...