错误:"运算符="不匹配 |结构返回类型

error: no match for ‘operator=' | struct return type

本文关键字:结构 不匹配 返回类型 运算符 错误      更新时间:2023-10-16

我正在收到以下错误消息:

dec_main.cpp:202:错误:'dec_log_used = dec.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();
};

关于需要修复的内容的任何建议?

dec类在dec_main.cpp中不确定。也许这就是为什么在这种情况下编译器会产生如此奇怪的错误。

有一种真正的做法,可以将类声明及其定义分开为C 。为了防止双重包含在内。

所以您应该有以下文件。

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,但您的编译器似乎有些奇怪。