将C ++结构指针从一个类传递到另一个类

时间:2015-04-10 14:43:04

标签: c++

我有两个不同的类(class1 class2),它们都有自己的头文件和cpp文件。 Class2包含了class1的标题。 Class1有两个公共结构。 我想从class1中的class2调用一个方法,并传递两个指向结构的指针。

在class1中调用class2中的方法。 (obj是class1中class2的对象):

obj.routine(ip_s.c_str(), &NLP_data_recv, &recv_data_data); //write to harddrive

在class2中声明方法之后:

int routine(std::string raw_data_re, struct NLP_data_header_package *Header_data, struct NLP_data_data_package *Data_data);

发生以下错误:

 “argument of type ""com::NLP_data_data_package *"" is incompatible with    parameter of type ""NLP_data_data_package *"" 

我该如何解决这个问题?谢谢。

编辑:附加代码:

class com header(class1):

#ifndef COM_H 
#define COM_H 
//... 
#include "Dateiverwaltung.h" 
//... 

class com 
{ 
private: 

Dateiverwaltung obj; 
//... 
public: 

int run(void); 
com(std::array<std::string,TWO> socket); 
~com(); 

struct NLP_data_header_package 
{ 
//... 
}NLP_data_recv; 

struct NLP_data_data_package 
{ 
//... 
}recv_data_data; 

class com cpp(class1)

//... 
if (recv_command == DATA_COMMAND) 
     { 
         obj.routine(ip_s.c_str(), &NLP_data_recv, &recv_data_data); //write to harddrive 
         obj.ext_close_file(); 
     } 
//...

class Dateiverwaltung header(class2)

#ifndef DATEIVERWALTUNG_H 
#define DATEIVERWALTUNG_H 

//... 
#include "communication.h" 
//... 
public: 
Dateiverwaltung(char* directory_global_re); 
~Dateiverwaltung();   

 int routine(std::string raw_data_re, struct NLP_data_header_package *Header_data, struct NLP_data_data_package *Data_data); 
 int ext_close_file(void); 
//...

class Dateiverwaltung cpp(class2)

//... 
int Dateiverwaltung::routine(string raw_data_re, struct NLP_data_header_package *Header_data, struct NLP_data_data_package *Data_data) 
{ 
//...

1 个答案:

答案 0 :(得分:0)

错误说有“com :: NLP_data_data_package” 和“NLP_data_data_package”

这是两个不同的类(对于编译器),因为它们似乎在不同的名称空间中定义,即com和默认名称空间。