C 相当于 C++ 的双冒号?
C equivalent of C++'s double colons?
我正在学习C,对C++一无所知。使用 C++ 的 LazyFoo 的 SDL2 教程使用双冒号做了一件我不理解的事情,因此无法在 C 中遵循。
如果有帮助,这里是 link 教程:
http://lazyfoo.net/tutorials/SDL/04_key_presses/index.php
SDL_Surface *loadSurface( std::string path )
{
//Load image at specified path
SDL_Surface *loadedSurface = SDL_LoadBMP( path.c_str());
if( loadedSurface == NULL )
{
printf("Unable to load image %s! SDL Error: %s\n", path.c_str(), SDL_GetError());
}
return loadedSurface:
}
除了函数参数和 LoadBMP 参数外,这里的所有内容对我来说都很有意义。我不知道 ::
是什么意思,我也不知道 path.c_str()
指的是什么。
拜托,有人可以用在 C 中有意义的方式解释它,或者建议一个仅 C 的解决方法吗?
与这里的::
无关。 std::string
作为一个整体只是指一个字符串,在 C 中可能表示为 const char *
(或者 char *
,因为我猜 C 程序员不关心变量的常量性). path.c_str()
只是意味着从 std::string
变量 path
中得到一个 const char *
,所以你可以放心地忽略它。
在 C 中,loadSurface
将简单地声明为
SDL_Surface *loadSurface(const char *path)
这意味着对SDL_LoadBMP
的调用可以写成
SDL_Surface *loadedSurface = SDL_LoadBMP(path);
如果您对学习 C++ 不感兴趣,那么 std::string
的作用和为什么需要 .c_str()
的详细信息与本教程无关。
我正在学习C,对C++一无所知。使用 C++ 的 LazyFoo 的 SDL2 教程使用双冒号做了一件我不理解的事情,因此无法在 C 中遵循。
如果有帮助,这里是 link 教程:
http://lazyfoo.net/tutorials/SDL/04_key_presses/index.php
SDL_Surface *loadSurface( std::string path )
{
//Load image at specified path
SDL_Surface *loadedSurface = SDL_LoadBMP( path.c_str());
if( loadedSurface == NULL )
{
printf("Unable to load image %s! SDL Error: %s\n", path.c_str(), SDL_GetError());
}
return loadedSurface:
}
除了函数参数和 LoadBMP 参数外,这里的所有内容对我来说都很有意义。我不知道 ::
是什么意思,我也不知道 path.c_str()
指的是什么。
拜托,有人可以用在 C 中有意义的方式解释它,或者建议一个仅 C 的解决方法吗?
与这里的::
无关。 std::string
作为一个整体只是指一个字符串,在 C 中可能表示为 const char *
(或者 char *
,因为我猜 C 程序员不关心变量的常量性). path.c_str()
只是意味着从 std::string
变量 path
中得到一个 const char *
,所以你可以放心地忽略它。
在 C 中,loadSurface
将简单地声明为
SDL_Surface *loadSurface(const char *path)
这意味着对SDL_LoadBMP
的调用可以写成
SDL_Surface *loadedSurface = SDL_LoadBMP(path);
如果您对学习 C++ 不感兴趣,那么 std::string
的作用和为什么需要 .c_str()
的详细信息与本教程无关。