2015-11-04 3 views
1

Я пытаюсь вернуть GLM-матрицу из функции, которую я использовал на Java, однако на C++ она дает мне «ошибку C2228: слева от «.createTransformationMatrix» должен иметь класс/структуры/объединения»C++ возвращающая матрица GLM из функции error: left of must have class/struct/union

Заголовочный файл

#ifndef MATHS_H 
#define MATHS_H 

#include <glm/glm.hpp> 
#include <glm/gtc/matrix_transform.hpp> 
#include <glm/gtc/type_ptr.hpp> 
#include <glew.h> 
#include <string> 
#include <vector> 

class Maths 
{ 
public: 

static glm::mat4 createTransformationMatrix(glm::vec3 translation, float 
     rx, float ry,float rz, float scale); 
}; 
#endif 

CPP файл

#include"Maths.h" 

glm::mat4 createTransformationMatrix(glm::vec3 translation, float rx, float 
    ry,float rz, float scale){ 

     glm::mat4 model = glm::mat4(); 
     //Do transformations 
     return model; 
} 

ошибка возникает, когда эта функция вызывается из внешнего класса, как так , Я не уверен, почему я получаю сообщение об ошибке.

glm::mat4 transformation = glm::mat4(); 
    transformation = Maths.createTransformationMatrix(  
glm::vec3(entity.getPosition()),1,1,1,1); 
+0

Если у вас есть класс с только статическими функциями-членов, рассмотрит с помощью 'namespace' вместо. Затем прочитайте об операторе scope '::'. –

ответ

1

По сравнению с Java, синтаксис для использования статических членов немного отличается в C++. Между имя-класса и имя-статического член-, вы должны использовать оператор области действия::, как показано ниже:

transformation = Maths::createTransformationMatrix(
    glm::vec3(entity.getPosition()),1,1,1,1);