【发布时间】:2022-01-20 00:49:36
【问题描述】:
为什么这个向量没有打印出来?
void str_read(std::vector<char> str);
int main() {
std::vector<char> str;
str_read(str);
std::cout << str << std::endl;
return -1;
}
void str_read(std::vector<char> str) {
while (1) {
char ch;
scanf("%c", &ch);
if (ch == '\n');
break;
}
}
我收到一个错误:
error: no type named 'type' in 'struct std::enable_if<false, void>'
【问题讨论】:
-
在评估来自编译器的错误消息时,您希望解决错误列表中的第一个错误。不是最后一个。第一个之后的任何一个都很有可能是第一个错误的结果。
-
还有一个问题。
str_read按值接受参数,所以你对函数内部的向量所做的任何事情都会在函数结束时丢失。 -
if(ch == '\n');那个分号可能会给你带来一些问题。 -
您的错误消息的原因是没有接受
std::vector作为参数的operator<<()。如果您引用了编译器发出的 FIRST 错误消息,而不是 LAST (许多),那将会有所帮助。当编译器在发出错误消息后继续运行时,它往往处于某种混乱状态——这种混乱往往会增加,因此错误消息与后续代码的关系较小。