"std::string const"与"const std::string"
"std::string const" versus "const std::string"
奇怪的行为。我正在用c++开发android原生应用程序,但遇到了错误。由于某些原因没有调用某些函数。经过一些恢复和比较。。
这给程序带来了麻烦。。
const std::string STR_PATH_ASSET("assets/");
const std::string STR_PATH_SD("/sdcard/unlock_data/assets/");
const std::string STR_SUFFIX_PNG(".png");
const std::string STR_SUFFIX_KTX(".ktx");
这使程序正常工作。。
std::string const STR_PATH_ASSET("assets/");
std::string const STR_PATH_SD("/sdcard/unlock_data/assets/");
std::string const STR_SUFFIX_PNG(".png");
std::string const STR_SUFFIX_KTX(".ktx");
无论如何,它是有效的,但我不知道为什么这种差异会导致如此奇怪的行为。你猜到了吗??
添加了完整的源代码。
这不仅是"std::string const"与"const std::字符串"的问题,也是声明本身的问题。很抱歉
这是我的源代码。当我取消注释那些std::string时,它不能正常工作。我在我的android上画了一些东西,但当使用std::string时,一些网格(顶点)的初始位置不同。从逻辑上讲,它一定不会影响这个常数是否存在。我在windowscygwin上使用ndk编译器版本4.6,ndk版本14。这个conststd::string声明会影响另一个堆栈的内存吗?转运价值还是什么?
typedef enum _ImageCompressType{
//REF http://stackoverflow.com/questions/9148795/android-opengl-texture-compression
COMPRESS_UNAVAILABLE = -1,
COMPRESS_ETC1 = 1,
COMPRESS_PVRTC,
COMPRESS_ATITC,
COMPRESS_S3TC
}ImageCompressType;
typedef enum _FileDataFrom{
FROM_ASSET, FROM_SD
}FileDataFrom;
//std::string const STR_PATH_ASSET("assets/");
//std::string const STR_PATH_SD("/sdcard/unlock_data/assets/");
//std::string const STR_SUFFIX_PNG(".png");
//std::string const STR_SUFFIX_KTX(".ktx");
class ImagesLoader {
public:
ImagesLoader* mgr;
static ImagesLoader* getInstance();
static void destroyInstance();
ImageCompressType TypeImgComrpess;
// GLuint* loadTextures(FileDataFrom from, std::vector<std::string> filename);
private:
ImagesLoader() {}
~ImagesLoader() {}
static ImagesLoader* self;
};
取自:http://www.cprogramming.com/tutorial/const_correctness.html
在声明const变量时,可以将const放在类型之前或之后
int const x = 5;
和
const int x = 4;
结果x是一个常量整数。
您提供的代码示例并不是您遇到"奇怪行为"的原因。
相关文章:
- cppcheck在const std::string[]上引发警告
- 使用 std::string () const 函数启动线程或未来
- c++ const mysqlpp::String ambiguous error
- OpenCV undefined reference to 'cv::imread(cv::String const&, int)'
- "No suitable conversion function from 'std::string' to 'const char *' exists"
- 如何在 c++ 中将向量转换为<string>常量字符* const*?
- 无法从'const std::string [3]'转换为'std::string'
- 从 std::string 转换为 const 无符号整数
- 为什么std::string没有(显式)const char*强制转换
- 如何使用 c++ 中的 int* count(const string&s)计算字符串中每个数字的出现次数?
- 将字符数组添加到 const string&in C++
- 为什么 stack<const string> 不能用 g++ 编译?
- 在函数中传递只读向量时,冗长真的值得吗?const vector<const string>&
- 为什么我不能从 const String& 方法返回 NULL?
- 返回对字符串对象的引用,错误:类型为 âconst string& 的引用初始化无效。C++
- 为什么我不能使用 "const string* sp = 0" 在构造函数中初始化
- Intel c++编译器- const string是可修改的
- c++头文件中的静态const string
- 错误:将"const string {aka const std::__cxx11::basic_string}"<char>作为"this"参数传递
- 将非常量向量传递给引用<string> const 向量<const string>?