c++ - g++ 在 vi​​sual studio 满意的地方给出错误 - 未定义的引用

标签 c++ visual-studio-2010 g++ cross-compiling

我有一些代码在 Visual Studio 上运行良好,我现在正尝试在 g++ 上编译它。它在很多地方给了我“对 SomeClass::someMethod() const 的 undefined reference ”。

最常见的是以下几种情况:

for (const SomeListNode *node = owner->some_list; node != 0; node = node->getNext())

在这种情况下,我得到“对 SomeListNode::getNext() const 的 undefined reference ”。明确包含此类的头文件。为什么这在 g++ 中不合法?

编辑更多信息

我正在使用这样的 makefile 进行构建:

CC=g++
CFLAGS=-c -Wall -DDEBUG -g
LDFLAGS=
SOURCES=main.cpp SomeList.cpp SomeListNode.cpp Location.cpp OutputControl.cpp
OBJECTS=$(SOURCES:.cpp=.o)
EXECUTABLE=theprogram

all: $(SOURCES) $(EXECUTABLE)

$(EXECUTABLE): $(OBJECTS)
    $(CC) $(LDFLAGS) $(OBJECTS) -o $@

.cpp.o: $(CC) $(CFLAGS) $< -o $@

最初列出的代码行位于 OutputControl.cpp 中。它采用指向 SomeListNode 的指针并对其进行迭代。 getNext() 返回指向另一个 SomeListNode 的指针。

可能还需要注意的是,这只发生在静态函数中。

最佳答案

您只能在具有 const 限定的对象上调用具有 const 限定的方法。如果 getNext() 不是 const,那么您应该使用 SomeListNode *node 而不是 const SomeListNode *node

关于c++ - g++ 在 vi​​sual studio 满意的地方给出错误 - 未定义的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5191798/

相关文章:

c++ - 使用类的成员函数访问内部结构成员时出错

c++ - 如何将一个字符的用户输入存储到 C++ 中数组的每个元素中?

.net - 为什么我的配置管理器在 Visual Studio 2010 中被禁用?

c++ - 使用 g++ 编译器打印 C++ 对象的布局

c++ - 使用python运行C++程序并测试

c++ - Hook 和控制后台进程的输入事件

sql - 为什么允许我有两个同名索引?

c++ - 将一个变量与另一个变量相关联?

c++ - C 与 C++ 编译不兼容 - 未命名类型

linux - g++ 搜索/lib/../lib/,然后搜索/lib/