gpt4 book ai didi

c++ - Clang编译器为什么会生成错误“在'〜'之后的类名是用来命名析构函数的”?

转载 作者:太空宇宙 更新时间:2023-11-04 05:55:39 27 4
gpt4 key购买 nike

我有一个正在开发的简单图形应用程序,想要跨平台运行。现在,我有一个简单的make文件,可以在Ubuntu Linux和OSX上正常编译。

我在Linux上使用GNU g ++,据我在OSX上了解,Clang编译器有g ++的别名-因此,这就是在OSX上运行make时所调用的名称。 Clang声称它是compatible with 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.


我看不出为什么在OSX上使用g ++在Linux上可以正常编译的有效声明的构造函数失败的原因。以下是相关代码:

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);
}


我想念什么?

最佳答案

可能是编译器known issue

关于c++ - Clang编译器为什么会生成错误“在'〜'之后的类名是用来命名析构函数的”?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60040791/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com