статическая открытая функция-член (C ++) - PullRequest
0 голосов
/ 02 апреля 2009

Мне нужно посчитать, сколько раз моя публичная функция-член создает новые данные в цикле. Каждый раз, когда данные читаются, они сохраняются в приватном доступном члене. Ничего не перезаписано.

// my classType.h
const int ImpliedIndex = 1000;

class classType
{
private:
  char privateMember[ImpliedIndex];
  char privateMember2[ImpliedIndex];
public:
  static void myMemberCounter;
  void printMyInformation():
  void mySupplier(const char[] );
  ...
};

//classType.cpp
int globalCounter = 0;

void classType::printMyInformation()
{
   ...
   cout << privateMember << endl;
   cout << globalCounter++ << endl;
}
void classType::mySupplier( const char buff[] )
{
   strcpy( privateMember, buff );

}

// The main should clear things up a bit.
// main.cpp

int main()
{
    while ( !inFile.eof() )
    {   
        for ( int x = 0; x < 20; x++ )
        {
       // do file I/O here
       // save each line of file into an temp array
       // supply temp array with a routine defined in myClass
       // re-use temp array until we run out of file
        }
    }    
//close file

Мне нужно изменить 20 на переменную. Обратите внимание, что в classType я использовал globalCounter для получения количества типов.

То, что я хотел сделать, это globalCounter = memberCounter;

Но я должен повторно объявить обе эти переменные, и я не могу использовать myClass[ImpliedIndex].memberCounter с оператором присваивания (=) или оператором двоичного ввода (<<). </p>

1 Ответ

1 голос
/ 02 апреля 2009

Эта строка:

static void myMemberCounter;

Должно генерировать ошибку во время компиляции. Он выглядит как переменная, но имеет тип void, что не имеет смысла.

Если вам нужен статический («переменная класса») счетчик, вы должны использовать тип, подобный int. Тогда классу будет легко использовать этот счетчик для подсчета количества экземпляров, просто увеличив счетчик в конструкторе. Счет может быть прочитан внешним миром, добавив функцию класса public для его возврата.

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