错误:不匹配'operator =' | struct返回类型

时间:2017-10-03 21:22:55

标签: c++

我收到以下错误消息:

  

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();
};

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

1 个答案:

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