GCC 调试/g++/警告
外观
- 在 GCC 版本 4.5.1 中发现的消息
- 通常与消息配对
- 注意: (如果这不是您的本意,请确保函数模板已声明,并在此处在函数名称后添加 <>)
template <typename T>
class Foo {
public:
T data;
friend void Bar(Foo<T> &);
};
template <typename T> void Bar(Foo<T> &f) {
cout << f.data << endl;
}
可能的修复?
template <typename TT> void Bar(TT &);
template <typename T>
class Foo {
public:
T data;
friend void Bar<>(Foo<T> &);
};
template <typename TT> void Bar(TT &f) {
cout << f.data << endl;
}
ISO C++ 认为这些是模棱两可的,即使第一个的最差转换比第二个的最差转换更好
- 在 GCC 版本 ? 中发现的消息
- 可能是自定义定义的类型转换干扰了类定义中的另一个转换
- 在 GCC 版本 4.4.3, 4.5.1 中发现的消息
- 有时与警告配对:"隐式常量转换溢出"
- 可能是由于在字符赋值中使用正斜杠而不是反斜杠造成的。
char mrChar = '/0'; // instead of: char mrChar = '\0';
- 在 GCC 版本 ? 中发现的消息
- 您正在向字符串函数传递一个空参数
strcpy(mrChar, '\0'); // won't work, null argument ('\0') supplied
strcpy(mrChar, ""); // will work?