CPP перегрузка оператора. Хочу выводить XMVECTOR в текст. string + FXMVECTOR = LPCWSTR
Есть вот такой код:
#include "stdafx.h"
#include "DirectXMath.h"
#include <Windows.h>
#include <string>
#include <sstream>
using namespace std;
void MyDirectXMath::CheckDXMath()
{
XMVECTOR vector = XMVectorZero();
LPCWSTR str = string("vector: ") + vector; // проблема здесь
MessageBox(nullptr, str , L"VectorValue", MB_OK);
}
LPCWSTR XM_CALLCONV operator+ (string abc, FXMVECTOR fxmvec) {
XMFLOAT3 vec;
XMStoreFloat3(&vec, fxmvec);
ostringstream ss{};
ss << abc << " = { " << vec.x << ", " << vec.y << ", " << vec.z << " }";
string str = ss.str();
wstring wstr = wstring(str.begin(), str.end());
return wstr.c_str();
}
Код ошибки : Ошибка C2678 бинарный "+": не найден оператор, принимающий левый операнд типа "std::string" (или приемлемое преобразование отсутствует)
Источник: Stack Overflow на русском