我收到以下错误消息:
dec_main.cpp:202:错误:'dec_log_used = DEC.dec :: decode()中'operator ='不匹配 wrapper.h:2:注意:候选人是:dec_log& dec_log :: operator =(const dec_log&)
当我运行以下代码时:
wrapper.h
typedef struct { int wt_sum; float num_itr; } dec_log;
dec.cpp
include "wrapper.h"
class dec {
public:
dec_log dec_log_used;
dec_log decode();
};
dec_log dec::decode() {
dec_log_used.wt_sum = 2;
dec_log_used.num_itr = 8;
return dec_log_used;
};
dec_main.cpp
#include "wrapper.h"
dec_log dec_log_used;
int main() {
dec DEC;
......
......
dec_log_used = DEC.decode();
};
有关需要修复的内容的任何建议吗?
答案 0 :(得分:0)
dec
中的dec_main.cpp
类未定义。也许这就是编译器在这种情况下产生如此奇怪错误的原因。
有一种在C ++中分离类声明及其定义的实际做法。为了防止双重包含include guard被使用。
所以你应该有以下文件。
<强> wrapper.h 强>
#ifndef WRAPPER_H
#define WRAPPER_H
typedef struct { int wt_sum; float num_itr; } dec_log;
#endif
的 dec.h 强>
#ifndef DEC_H
#define DEC_H
#include "wrapper.h"
class dec
{
public:
dec_log dec_log_used;
dec_log decode();
};
#endif
的 dec.cpp 强>
#include "dec.h"
dec_log dec::decode()
{
dec_log_used.wt_sum = 2;
dec_log_used.num_itr = 8;
return dec_log_used;
}
的 dec_main.cpp 强>
#include "dec.h"
dec_log dec_log_used;
int main()
{
dec DEC;
dec_log_used = DEC.decode();
}
在这段代码中包括守卫不是必要的,但要养成习惯。您可以使用#pragma once
代替,但您的编译器似乎有些奇怪。