【发布时间】:2019-05-18 18:26:54
【问题描述】:
我有一个向量结构,我试图在另一个头文件中通过引用来调用向量。
头文件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
如何让它正常工作?
【问题讨论】:
-
您需要
class1的实例才能访问vector1类成员,除非您将class1::vector1设为static类成员。 -
在没有
vector的情况下让它工作。使用简单的int。这将向您展示潜在的问题。先解决这些。 -
vector1是类class1的实例成员。在您拥有class1的实例之前,那里没有there。当然,您可以将vector1静态化为class1类(然后修复链接器错误,因为您忘记在某处实际定义静态实例,您无疑会立即得到),这可能/会“工作”。但它也很可能不是您想要的架构。class2::function1也有类似的问题,顺便说一句,这次是使用成员函数而不是成员变量。或许查看您的 C++ 文本。 -
值得一提的是,这段代码的问题与标题和文本所暗示的多个头文件完全无关。即使这段代码都在同一个 cpp 文件中,除了库存系统头文件之外没有其他头文件,它也会失败。
-
这里错得太多了,我会多研究 C++ 的基础知识。您需要了解类的类型和实例(AKA 对象)之间的区别。
标签: c++