将 std::set 传递给 C++ 中的方法
考虑到以下先决条件:
shared.h
struct A {
int x;
int y;
}
typedef set<A> setOfA;
implementation1.cpp
#include "shared.h"
void Implementation1::someFunction()
{
//...
setOfA setinstance;
//...
Implementation2* i = new Implementation2();
i->functionF(setinstance);
}
implementation2.h
#include "shared.h"
void Implementation2::functionF(setOfA&);
编辑:现在应该更清楚了...
我想将 setOfA
传递给不同类的另一个函数 - 一切都编译得很好。我遇到以下链接器问题:
未定义引用
'implementation::functionF(std::set, std::allocator>&)'
只是为了正确 -找不到实现,对吗?这不可能是 typedef 问题,因为一切都编译得很好......我在这里缺少什么?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
链接器无法找到
void functionF(setOfA&);
的定义,在某个地方,您需要:
只是稍微详细说明一下,您不应该有实现上述代码的implementation2.cpp 文件?
The linker is unable to find the definition of
void functionF(setOfA&);
Somewhere, you need:
Just to elaborate on this slightly, shouldn't you have an implementation2.cpp file that implements the above code?
您没有为
A
定义比较器,因此它们的集合不能存在。定义一个函数:
并确保它实现严格的弱排序;在这种情况下,可能:
You didn't define a comparator for
A
, so a set of them can't exist.Define a function:
and ensure that it implements a strict weak ordering; in this case, probably:
我的主要问题是我在错误的命名空间中工作。我同意关闭这个线程,因为它可能只是帮助我解决我的具体问题 - 另一方面,实现
operator<
的提示给了我线索。为了完整起见,这是我的operator<
实现。My major problem was that I was working in the wrong namespace. I agree to close this thread, because it's probably just helping me with my specific problem - on the other hand the hint to implement the
operator<
gave me the clue. For the sake of completeness, here's myoperator<
implementation.