未定义的引用到类构造函数
Undefined referece to class constructor
我收到以下错误:
> /tmp/ccYbdvB8.o: In function `main':
> /home/caleb/Documents/dev/cs438/tote2/mp2/manager.cpp:5: undefined
> reference to `TCPConnection::TCPConnection(char const*, char const*)'
> collect2: error: ld returned 1 exit status make: *** [manager] Error 1
我已经将标头包含在我尝试初始化的类中......所以我想也许这是我的makefile?我对编写自定义生成文件很陌生...
.cpp:
#include "tcpcon.h"
const string TCPConnection::Client = "client";
const string TCPConnection::Server = "server";
TCPConnection::TCPConnection(const char* t, const char* p) : target(t), port(p)
{ }
h:
class TCPConnection{
public:
TCPConnection(const char *target, const char *port);
主要:
#include "tcpcon.h"
int main()
{
TCPConnection *TCPCon = new TCPConnection("localhost", "7777");
cout << "Hin";
return 0;
}
制作文件:
CC=g++
CCOPTS=-Wall -Wextra -g
OBJS = tcpcon.o
TARGETS = manager
.PHONY: all clean
$(TARGET) : $(OBJS)
$(CC) -o $@ $^ $(CFLAGS) $(LIBS)
all: $(OBJS) $(TARGETS)
clean:
rm -f $(TARGETS) $(OBJS)
%: %.cpp
$(CC) $(CCOPTS) -o $@ $<
事实证明,该问题可能与以下几件事有关:
- 在一个地方使用 $(TARGET)
- 而不是 $(TARGET)
- 未将主文件(管理器.cpp)包含在 OBJS 列表中
我更新makefile
如下:
CC=g++
CCOPTS=-Wall -Wextra -g
OBJS = manager.o tcpcon.o
TARGETS = manager
.PHONY: all clean
$(TARGETS) : $(OBJS)
$(CC) -o $@ $^ $(CFLAGS) $(LIBS)
all: $(TARGETS) $(OBJS)
clean:
rm -f $(TARGETS) $(OBJS)
%: %.cpp
$(CC) $(CCOPTS) -o $@ $<
相关文章:
- 在类构造函数中传递对外部函数的引用
- 在 c++ 中将变量作为结构构造函数中的引用传递
- C++ 尝试在不存在的构造函数中引用已删除的函数(使用 rapidJson)
- 移动构造函数和右值引用
- 为什么我的运算符 + 重载尽管是通过引用传递的,但仍调用我的复制构造函数?
- 如何使用 swig 修改类构造函数以保留对其中一个构造函数参数的引用?
- 在引用初始化中使用已删除的复制构造函数进行复制初始化
- 为什么我需要在转换构造函数上引用 this->?
- 关于隐式声明的复制构造函数的引用在逻辑上不清楚
- C++:右值引用构造函数和复制省略
- CLion - 无法解决类中对构造函数的未定义引用
- 当有右值构造函数可用时,为什么从右值调用类引用构造函数重载?
- 为什么定义复制构造函数会给我错误:无法将类型 'obj&' 的非常量左值引用绑定到类型为"obj"的右值?
- 调用默认构造函数时不引用它
- C++ 构造函数传递对基类对象的引用
- 使用默认构造函数引用成员变量初始化错误
- 构造函数引用参数导致seg错误
- 未定义的类构造函数引用,当它被正确定义时
- 如何从父类构造函数引用重写的静态方法
- 创建构造函数引用全局变量的类的全局实例时,C++ 程序崩溃