我有两个不同的类(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)
{
//...
答案 0 :(得分:0)
错误说有“com :: NLP_data_data_package” 和“NLP_data_data_package”
这是两个不同的类(对于编译器),因为它们似乎在不同的名称空间中定义,即com和默认名称空间。