我有一个向量结构,我试图通过另一个头文件中的引用来调用向量。
头文件1
struct struct1
{
struct1();
};
class class1
{
public:
std::vector<struct1> vector1;
}
其他头文件
class class2
{
Public:
class2();
void function1(std::vector<struct1>& _vector);
}
在主cpp文件中
int main()
{
class2.function1(class1::vector1);
return 0;
}
头文件相互包含并且位于主ccp文件上。 我得到的主要错误是针对行“ void function1(std :: vector&_vector)”
Error C2903 'allocator': symbol is neither a class template nor a function template
Error C3203 'allocator': unspecialized class template can't be used as a template argument for template parameter '_Alloc', expected a real type
如何使它正常工作?
答案 0 :(得分:1)
如何使它正常工作?
根据我可以推断出的代码,您需要在main()
中执行以下操作:
int main() {
class2 c2; // Avoid naming variables the same as their typenames
class1 c1;
c2.function1(c1.vector1);
return 0;
}
class
/ struct
接口 1 的声明。class
/ struct
成员声明为static
,否则您将需要一个实例来访问它们。 1) 请注意,class
和struct
的定义需要在最后一个大括号({ {1}})
答案 1 :(得分:0)
让我向您展示最简单的方法(online editor):
head1.cpp
#include <vector>
struct struct1
{
struct1();
};
class class1
{
public:
std::vector<struct1> vector1;
};
head2.cpp
#include <vector>
#include "head1.cpp"
class class2
{
public:
class2() {};
void function1(std::vector<struct1>& _vector) {};
};
main.cpp
#include <iostream>
#include "head2.cpp" // Only head2 is needed as head1 is already imported in head2
using namespace std;
int main() {
class2 c2;
class1 c1;
c2.function1(c1.vector1);
return 0;
}
答案 2 :(得分:0)
已编译且可以正常工作:
main.cpp :
#include "class1.h"
#include "class2.h"
#include <vector>
int main()
{
class1 first;
class2 second;
second.function1(first.vector1);
return 0;
}
class1.h :
#pragma once
#include "struct1.h"
#include <vector>
class class1
{
public:
std::vector<struct1> vector1;
};
class2.h :
#pragma once
#include "struct1.h"
#include <vector>
class class2
{
public:
class2()
{
}
void function1(std::vector<struct1>& _vector)
{
}
};
struct1.h :
#pragma once
struct struct1
{
struct1()
{
}
};
答案 3 :(得分:-1)
您需要使用 struct1 创建头文件,并将其包含在“ 头文件1 ”和“ 其他头文件”中
我不确定,但是可能会起作用:只需在 class2 声明之前的“ 其他头文件”中声明您的 struct1 像这样:struct struct1;