【问题标题】:Struct doesn't print with cout结构不使用 cout 打印
【发布时间】:2021-09-03 14:32:09
【问题描述】:

我正在尝试在 int prejetih 成员最高的数组中打印结构。

#include <iostream>
using namespace std;

struct Tekma {
    int prejetih;
};

Tekma najvec_kosev(Tekma tekme[]) {
    int maksi = 0, index = 0;
    for (int i = 0;i < 2;i++) {
        if (maksi < tekme[i].prejetih) {
            index = i;
            maksi = tekme[i].prejetih;
        }
    }
    return tekme[index];
}

void vpis(Tekma tekme[]) {
    for (int i = 0;i < 2;i++)
        cin >> tekme[i].prejetih;
}

int main() {
    Tekma tekme[2];
    vpis(tekme);
    cout << najvec_kosev(tekme);
}

编译器报告

C++ no operator matches these operands 
operand types are: std::ostream << Tekma

超过cout &lt;&lt; najvec_kosev(tekme);

【问题讨论】:

  • std::cout 抛出哪个错误?
  • cout 不知道如何打印Tekma。你可以重载operator&lt;&lt;或者cout &lt;&lt; najvec_kosev(tekme).prejetih;
  • 它抛出一个:C++ no operator matches these operands operand types are: std::ostream &lt;&lt; Tekma 错误
  • @TimHajdinjak,因此,如果您仔细阅读错误消息,您可能会意识到您需要为您的类型重载 operator&lt;&lt;。
  • 您可以在 ostream&amp; operator&lt;&lt;(ostream&amp;, Tekma const&amp;); 例程中打印 Tekma 中的其他变量。

标签: c++ struct


【解决方案1】:

在这里使用std::vector 的解决方案并解决您的 cout 问题:

#include <iostream>
#include <vector>
using namespace std;

struct Tekma {
    int prejetih;
};

Tekma najvec_kosev(vector<Tekma>& tekme) {
    Tekma lowest = tekme[0]
    for(auto& t : tekme) {
        if(lowest.prejetih < t.prejetih) {
            lowest = t;
        }
    }
    return lowest ;
}

void vpis(vector<Tekma>& tekme) {
    int input;
    while(true) {
        cin >> input;
        // Check if the input is valid else quit the loop.
        if(input == valid) {
            Tekma newStruct = {input};
            tekme.push(newStruct);
        }
        else {
            // Stop the loop
            break;
        }
    }
}

int main() {
    vector<Tekma> tekme;
    vpis(tekme);
    cout << najvec_kosev(tekme).prejetih; // This fixes your error.
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-29
    • 2011-12-25
    • 2019-08-01
    • 2022-08-18
    • 2011-10-12
    • 2011-08-11
    相关资源
    最近更新 更多