struct作为参数导致正式参数列表中的"不匹配"

时间:2017-07-18 21:36:07

标签: c++ struct

您好我在使用struct作为参数时遇到了问题。

我的结构看起来如下:

typedef struct temps {
    string name;
    float max;
} temps;

我可以在我的主体中使用它而不会出现如下问题:

temps t;
t.max = 1.0;

但在像这样的函数签名中使用它:

void printTemps(const temps& t) {
    cout << t.name << endl << "MAX: " << t.max << endl;
}

它给了我以下编译器消息:

  

错误C2563:形式参数列表不匹配

这是一个mwe:

#include <iostream>
#include <fstream>
#include <string>
#include <windows.h>
#include <Lmcons.h>

using namespace std;

typedef struct temps {
    string name;
    float max;
} temps;

void printTemps(const temps& t) {
    cout << t.name << endl << "MAX: " << t.max << endl;
}

int main(int argc, char **argv)
{
    temps t;
    t.max = 1.0;
    printTemps(t);
}

任何想法在结构上都有错吗?

1 个答案:

答案 0 :(得分:-1)

您正在使用C typedef结构声明。

typedef struct temps {
    string name;
    float max;
} temps;

//void printTemps(const temps& t) {
void printTemps(const struct temps& t) {  // should match the C idiom
    cout << t.name << endl << "MAX: " << t.max << endl;
}

但是由于你是用C ++编程,你应该使用C ++方式声明结构。

struct temps {
    string name;
    float max;
};

void printTemps(const temps& t) {
    cout << t.name << '\n' << "MAX: " << t.max << '\n';  // using \n is more efficient
}                                                        // since std::endl 
                                                         // flushes the stream