Nightmare1
@Nightmare1
Программист

По какой причине здесь возникает ошибка?

==== Building Машинный Выполнение (debug_x64) ====
Linking Машинный Выполнение
obj/x64/Debug/Color.o: In function `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_replace(unsigned long, unsigned long, char const*, unsigned long)':
Color.cpp:(.text._ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_replaceEmmPKcm[_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_replaceEmmPKcm]+0x24a): undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_replace_cold(char*, unsigned long, char const*, unsigned long, unsigned long)'
collect2: ошибка: выполнение ld завершилось с кодом возврата 1
make[1]: *** [Машинный Выполнение.make:162: ../Выполнение/Debug/Машинный] Ошибка 1
make: *** [Makefile:30: Машинный Выполнение] Ошибка 2


#include "Color.hpp"

using namespace Машинный::Графика::Цвета;
using namespace Машинный::Types;

Цвет::Цвет(byte красный, byte зелёный, byte синий)
{

}

#include "../../Инструменты/Строка.hpp"

bool Цвет::fromString(const std::string & hash)
{
  if(!Машинный::Utils::String::CheckIsRGBHexCSS(hash))
    return false;

  auto к = std::stoi(hash.substr(1, 2), 0, 16),
      з = std::stoi(hash.substr(3, 4), 0, 16),
      с = std::stoi(hash.substr(5, 6), 0, 16);

  set_красный( (byte)std::min( к , 255) );
  set_зелёный( (byte)std::min( з , 255) );
    set_синий( (byte)std::min( с , 255) );

  return true;
}

bool Цвет::deserialize(const std::string & hash)
{
  return false;
}

std::string Цвет::toString() const
{
  return "Color(" + std::to_string(get_красный()) + ", "
      + std::to_string(get_зелёный()) + ", "
      + std::to_string(get_синий()) + ": "  + toHex() + ");";
}

#include "../../Инструменты/Строка.hpp"

std::string Цвет::toHex() const
{
  using namespace Машинный::Utils;

  return "#" + 
    String::Hexify<byte>((byte)get_красный()) +
    String::Hexify<byte>((byte)get_зелёный()) +
    String::Hexify<byte>((byte)get_синий()) ;
}


std::string Цвет::serialize()
{
  return "";
}

void Цвет::инвертировать()
{
  set_красный(255 - get_красный());
  set_зелёный(255 - get_зелёный());
  set_синий(255 - get_синий());
}

#include "../../Определения/Platform.h"

#ifdef __Linux__
#   define random_to(number) (random() % number + 1)
#elif defined(__Windows__)
#   include <cmath>
#   define random_to(number) (rand() % number + 1)
#endif

void Цвет::randomize()
{
  set_красный(random_to(255));
  set_зелёный(random_to(255));
  set_синий(random_to(255));
}


#pragma once
#ifndef __COLOR__HPP__
#define __COLOR__HPP__

#include <string>
#include "../../Интерфейсы/Описание Объекта/ISerializable.hpp"
#include "../../Интерфейсы/Описание Объекта/IRandomize.hpp"
#include "../../Определения/Типы Данных.h"
#include "../../Графика/BaseGUISegmentClass.hpp"


namespace Машинный { namespace Графика {
  
  /**
   * @brief Объекты цветового пространства.
   * 
   */
  namespace Цвета {

/**
 * @brief Представление класса цвета.
 * 
 * @tparam T 
 */
class Цвет : public Машинный::Interfaces::ISerializable, public Машинный::Interfaces::IRandomize
{
  ParameterGetSetTypedDefault(Машинный::Types::byte, красный, 0);
  ParameterGetSetTypedDefault(Машинный::Types::byte, зелёный, 0);
  ParameterGetSetTypedDefault(Машинный::Types::byte, синий, 0);

  public:
    Цвет(Машинный::Types::byte красный = 0, Машинный::Types::byte зелёный = 0, Машинный::Types::byte синий = 0);

    virtual std::string toString() const override;
    virtual bool fromString(const std::string &) override;
    virtual std::string toHex() const override;
    virtual std::string serialize() override;
    virtual bool deserialize(const std::string &) override;

    /**
     * @brief Инверсия значений. 255 - cv.
     * 
     */
    virtual inline void инвертировать();

    virtual void randomize();
};

/**
 * @brief HSV репрезентация цветового пространства.
 * 
 * @tparam T 
 */
template<typename T> class Color_HSV : public Машинный::Interfaces::ISerializable
{
  public:
    Color_HSV(T h, T s, T v);


    virtual bool fromHashTag(const std::string & hashtag);
};


}}}

#endif // __COLOR__HPP__
  • Вопрос задан
  • 194 просмотра
Пригласить эксперта
Ответы на вопрос 1
alxndrlsn
@alxndrlsn
Инженер
Смею предположить, что проблема в кодировке, точнее в подходе к программированию: компиляторы, насколько мне известно, несколько консервативны...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы