На данный вопрос уже ответили:
Пытаюсь реализовать перегрузку операторов ввода и вывода в поток для класса. Код следующий:
#pragma once
#ifndef MYSTRING_H
#define MYSTRING_H
#include <iostream>
#include <stdexcept>
#include <cstdlib>
using namespace std;
/*Namespace for a MyString class*/
namespace str {
/*MyString class*/
class MyString {
char* string = nullptr;
size_t* size = nullptr;
public:
MyString();
MyString(char* const new_string);
MyString(const MyString& input_string);
MyString(const size_t& size, const char& symbol);
~MyString();
size_t length() const;
char* c_str() const;
char& operator[](const int& n);
char* operator=(char* const input_string);
friend ostream& operator<<(ostream& stream, const MyString& output_string);
friend istream& operator>>(istream& stream, MyString& input_string);
};
ostream& operator<<(ostream& stream, const MyString& output_string) {
stream << output_string.string;
return stream;
}
istream& operator>>(istream& stream, MyString& input_string) {
char* input_data = nullptr;
int counter = 0;
char symbol;
while (true) {
if ((symbol = stream.get()) != '\n') {
input_data = (char*)realloc(input_data, ++counter);
input_data[counter - 1] = symbol;
}
else {
input_data = (char*)realloc(input_data, ++counter);
input_data[counter - 1] = 0;
break;
}
}
input_string.string = new char[counter];
strcpy_s(input_string.string, counter, input_data);
*input_string.size = input_string.length();
return stream;
}
}
#endif // MYSTRING_H
Делаю как в этом примере. Получаю ошибку:
fatal error LNK1169: one or more multiply defined symbols found
Реализация остальных методов - в отдельном файле cpp. Проблема именно с операторами ввода и вывода.
Что я делаю не так? VS17.
Думаю, что включаете этот h-файл (содержащий не-inline определения операторов) в несколько .cpp-файлов. тем самым нарушая правило одного определения...
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
Периодически замечаю, что в студии слетают брейпоинтыРаньше помогал clean - rebuild
Почему нет возможности создать проект Google Test в Visual Studio Community 2017? В инсталлере установлен адаптер тестов для Google Tests
сначала выкладываю сообщение об ошибках: