template <typename T>
bool validate(const T& minimum, const T& maximum, const T& testValue) {
return testValue >= minimum && testValue <= maximum;
}
template <>
bool validate<const char&>(
const char& minimum,
const char& maximum,
const char& testValue)
{
char a = toupper(testValue);
char b = toupper(minimum);
char c = toupper(maximum);
return a >= b && a <= c;
}
Run Code Online (Sandbox Code Playgroud)
这是函数模板,不知何故在调用函数main时validate,它const char&甚至在参数出现时都不会使用第二个函数(即函数)char.任何人都可以看到我的问题在哪里?
std::ostream& operator<<(std::ostream&, const Course&);
void Course::display() {
std::cout << std::left << courseCode_ << " | " << std::setw(20) << courseTitle_ << " | " << std::right
<< std::setw(6) << credits_ << " | " << std::setw(4) << studyLoad_ << " | ";
}
std::ostream& operator<<(std::ostream& os, const Course& a) {
a.display();
return os;
}
Run Code Online (Sandbox Code Playgroud)
问题在下面的ostream运算符的实现中发生a.display()。我看不出问题出在哪里,我还有其他代码可用于相同的实现。
错误信息:
该对象的类型限定符与成员函数“ sict :: Course :: display”不兼容。对象类型为const sict :: Course