У меня есть код, который отлично работает в Visual Studio, и сейчас я пытаюсь скомпилировать его на g ++.Он дает мне «неопределенную ссылку на SomeClass :: someMethod () const» в нескольких местах.
Чаще всего это следующая ситуация:
for (const SomeListNode *node = owner->some_list; node != 0; node = node->getNext())
В этом случае яполучить 'неопределенную ссылку на SomeListNode :: getNext () const'.Заголовочный файл этого класса явно включен.Почему это не разрешено в g ++?
для получения дополнительной информации отредактируйте
Я строю с помощью make-файла следующим образом:
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 $ @ </p>
Первоначально указанная строка кода указана в OutputControl.cpp
.Он берет указатель на SomeListNode
и перебирает его.getNext
() возвращает указатель на другой SomeListNode
.
Также следует отметить, что это происходит только в статических функциях.