Я определил функцию как статический в своем классе таким образом (фрагмент соответствующего кода)Статическая функция: класс хранения не может быть указан здесь
#ifndef connectivityClass_H
#define connectivityClass_H
class neighborAtt
{
public:
neighborAtt(); //default constructor
neighborAtt(int, int, int);
~neighborAtt(); //destructor
static std::string intToStr(int number);
private:
int neighborID;
int attribute1;
int attribute2;
#endif
и в файле .cpp, как
#include "stdafx.h"
#include "connectivityClass.h"
static std::string neighborAtt::intToStr(int number)
{
std::stringstream ss; //create a stringstream
ss << number; //add number to the stream
return ss.str(); //return a string with the contents of the stream
}
и я получаю сообщение об ошибке (VS C++ 2010) в файле .cpp, в котором говорится: «Здесь не может быть указан класс хранения», и я не могу понять, что я делаю неправильно.
p.s. Я уже читал this, который выглядит как дубликат, но я не знаю, как он это делает, - что я прав, а компилятор - изящный. Любая помощь приветствуется, я не могу найти никакой информации об этом!
Вы уверены, что используете 'mutable'? Он выглядит как спецификатор * storage-class-specifier * в BNF, но он не ведет себя как один. И 'thread_local' является спецификатором класса хранения в C++ 11. –
@BenVoigt: Да, C++ 03 §7.7.1 явно перечисляет эти 5 спецификаторов. –