Попытка получить код, компилируемый в g++, для компиляции в VS2015. Я безуспешно осматривал SO и Google, но cmath задокументирован в MSDN. Я предполагаю, что мне не хватает чего-то действительно очевидного или простого.
cmath выдает много ошибок, большинство ошибок, которые я получаю во время компиляции, и половина из них имеют форму:
the global scope has no "<function>"
другие в форме
'<function>': redefinition; different exception specification
'<function>': identifier not found
'<function>': is not a member of "global namespace"
Я не понимаю, почему выдаются эти ошибки, но если я использую math.h, большинство моих ошибок компиляции исчезают (включая некоторые из других стандартных библиотек, которые тоже вылетают).
Изменить: по запросу, код. Я использую функции sqrt и pow:
#include "vector.h"
#include <cmath>
using namespace vectormath;
vector::vector()
{
this->_x = 0;
this->_y = 0;
this->_z = 0;
this->_length = 0;
}
vector::vector(float x, float y, float z)
{
this->_x = x;
this->_y = y;
this->_z = z;
this->_length = sqrt(pow(_x, 2) + pow(_y, 2) + pow(_z, 2));
}
vector * vectormath::crossproduct(vector * a, vector * b)
{
vector * result = new vector();
result->_x = a->_y * b->_z - a->_z * b->_y;
result->_y = a->_z * b->_x - a->_x * b->_z;
result->_z = a->_x * b->_y - a->_y * b->_x;
return result;
}
point::point()
{
this->_x = 0.0;
this->_y = 0.0;
this->_z = 0.0;
}
point::point(float x, float y, float z)
{
this->_x = x;
this->_y = y;
this->_z = z;
}
float vectormath::dotproduct(vector a, vector b)
{
return a._x * b._x + a._y * b._y + a._z * b._z;
}
vector * vectormath::add(point * a, vector * b)
{
vector * c = new vector();
c->_x = a->_x + b->_x;
c->_y = a->_y + b->_y;
c->_z = a->_z + b->_z;
return c;
}
Редактировать: и vector.h
namespace vectormath
{
struct vector
{
float _x;
float _y;
float _z;
float _length;
vector();
vector(float x, float y, float z);
};
struct point
{
float _x;
float _y;
float _z;
point();
point(float x, float y, float z);
};
vector * crossproduct(vector*, vector*);
float dotproduct(vector a, vector b);
vector * add(point * a, vector * b);
}
cmath
? У вас есть минимально воспроизводимый пример? - person Niall   schedule 14.04.2016#pragma once
... может вызвать проблемы, если он включен в несколько файлов cpp. - person Niall   schedule 14.04.2016