ошибка: нет соответствия для оператора & lt; & lt; ’

Это мой оператор<< реализация:

std::ostream& operator<< (std::ostream &out, FileDir &obj) {
out << obj.toString();
return out;
}

Я добавил эту строку в мой заголовочный файл FileDir после объявления класса FileDir:

std::ostream& operator<< (std::ostream &out, FileDir &obj);

В моем FileDirTest, для проверки оператора<<У меня есть следующее:

assert(cout << t1 == "testFileOne 50kb");

(где t1 — это FileDir)

Это ошибка, которую я получаю:

error: no match for ‘operator<<’ (operand types are ‘std::ostream {aka std::basic_ostream<char>}’ and ‘FileDir’)
assert(cout << t1 == "testFileOne 50kb");

Кроме того, вот полный заголовочный файл:

 #include <sstream>

class FileDir {

public:
FileDir();
FileDir(std::string nameVal, long sizeVal = 4, bool typeVal = false);
FileDir(const FileDir &obj);
~FileDir();            // destructor
long getSize() const;
std::string getName() const;
bool isFile() const;
std::string rename(std::string newname);
long resize(long newsize);
std::string toString();
bool operator== (const FileDir &dir1);
bool operator<(const FileDir &obj);

private:
std::string name;
long size;
bool type;
};

std::ostringstream& operator<< (std::ostringstream &out, FileDir &obj);

Это мой toString ():

std::string FileDir::toString()

{
std::string whatever;
std::stringstream converter;
converter << size;
converter >> whatever;

std::string combined;

if (type == false) {
combined = name + " " + whatever + "kb";
}

if (type == true) {
combined = name + "/" + " " + whatever + "kb";
}

return combined;
}

И это часть FileDirTest, которая вызывает ошибку:

static void OperatorsTest() {

FileDir t1("testFileOne", 50, false);
FileDir t2("testDirectory", 100, true);
FileDir t3("testFileTwo", 20, false);
assert(t1 < t2);
assert(t3 < t2);

std::ostringstream oss;
oss << t1;
assert(oss.str() == "testFileOne 50kb");

}

3

Решение

Обновление: оказалось, что мой заголовочный файл был скомпилирован ранее, поэтому любые изменения, которые я внес в него, не были выполнены. После того как я удалил файл .gch, FileDirTest наконец скомпилировал.

0

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


По вопросам рекламы ammmcru@yandex.ru
Adblock
detector