У меня есть простое графическое приложение, которое я разрабатываю и хочу запустить кроссплатформенно. Прямо сейчас у меня есть простой make-файл, который прекрасно компилируется как на Ubuntu Linux, так и на OSX.
Я использую GNU g ++ на Linux, и, как я понимаю, на OSX есть псевдоним для g ++ для компилятор Clang - вот что он вызывал при запуске make
на OSX. Clang утверждает, что он совместим с g ++ , и до сегодняшнего дня у меня не было проблем с совместимостью. Однако вчера я добавил класс с деструктором, когда работал на своей машине Linux, и когда я попытался скомпилировать тот же код на моей машине OSX, я получил следующую ошибку:
make osx
g++ -o build/open_gl_demo *.cpp -framework OpenGL -lGLEW -lglfw -lSOIL
In file included from main.cpp:4:
./shader_program.hpp:18:6: error: expected the class name after '~' to name a destructor
~ShaderProgram();
^~~~~~~~~~~~~
ShaderProgram
1 error generated.
In file included from shader_program.cpp:1:
./shader_program.hpp:18:6: error: expected the class name after '~' to name a destructor
~ShaderProgram();
^~~~~~~~~~~~~
ShaderProgram
shader_program.cpp:46:17: error: expected the class name after '~' to name a destructor
ShaderProgram::~ShaderProgram() {
^~~~~~~~~~~~~
ShaderProgram
2 errors generated.
I не вижу причин, почему правильно объявленный конструктор , который прекрасно компилируется с g ++ в Linux, не работает в OSX. Вот соответствующий код:
shader_program.hpp:
class ShaderProgram {
public:
[...other public methods and variable signatures...]
~ShaderProgram();
};
#endif
shader_program. cpp:
#include "shader_program.hpp"
[...other method definitions...]
ShaderProgram::~ShaderProgram() {
glDeleteProgram(ShaderProgram);
glDeleteShader(FragmentShader);
glDeleteShader(VertexShader);
}
Чего мне не хватает?