您好我在使用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);
}
任何想法在结构上都有错吗?
答案 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