在c++中创建实例时出现错误
get an error when create instance in c++
头文件:
class FakeMas
{
FakeMas();
~FakeMas();
}
CPP文件:
FakeMas::FakeMas(){........}
FakeMas::~FakeMas(){}
我写了一个cpp文件来测试FakeMas:
class FakeMasTest{
void test()
{
FakeMas fakemas;
fakemas.start();
}
}
项目中名为"zinc.testwebserver"的类
如果我创建它,它会显示
FakeMasTest.cpp:29: undefined reference to `zinc::testwebserver::FakeMas::FakeMas()'"
如果我将测试改为:
FakeMas::FakeMas * fakemas = new FakeMas::FakeMas();
上面写着
error: ‘fakemas’ was not declared in this scope
如果我将测试改为:
FakeMas * fakemas = new FakeMas();
上面写着
undefined reference to `zinc::testwebserver::FakeMas::FakeMas()'
我真的不知道该怎么做……
有什么想法吗?
谢谢
这听起来像是一个链接错误:FakeMas.cpp
的目标代码没有与FakeMasTest.cpp
的目标代码链接
(在某些平台上是FakeMas.o
和FakeMasTest.o
,在其他平台上是.obj
-您没有指定您的平台)。
你得到的无关的错误是因为这是无效的:
FakeMas::FakeMas * fakemas = new FakeMas::FakeMas();
应该是:
FakeMas * fakemas = new FakeMas();
(然后你会回到相同的链接错误)。
从你的Makefile:
CppUnit_Tests = fakemastest
TESTS = $(CppUnit_Tests)
testdir = $(prefix)/tests/@PACKAGE@/test
test_PROGRAMS = $(CppUnit_Tests)
fakemastest_SOURCES = FakeMasTest.cpp
你告诉Make可执行的fakemastest
只依赖于 FakeMasTest.cpp
。告诉它关于FakeMas.cpp
,通过改变最后一行:
fakemastest_SOURCES = FakeMasTest.cpp FakeMas.cpp
(这是对您的构建规则的某些假设,没有显示,但这是一个明智的开始)。
编译器似乎找不到FakeMas
的声明。要么你没有加
#include "FakeMas.h"
或者您需要指定正确的名称空间:
using namespace namespace_with_FakeMas;
编译器消息显示编译器正在寻找命名空间zinc::testwebserver
中的类声明。这似乎与声明FakeMas
的名称空间不同。
相关文章:
- 多个文件的内存分配错误"在抛出 'std :: bad_alloc' what (): std :: bad_alloc 的实例后终止调用" [C++]
- 我收到以下错误:抛出'std::bad_alloc'实例后终止调用
- 为什么包含windows.h会产生语法错误,从而阻止类的实例化?(C2146,C2065)
- 为什么创建友元类的实例会导致"undefined reference to"错误?
- 错误 没有与参数列表匹配的重载函数"getline"实例
- 错误的cv::face FacemarkLBF实例化
- C++应用程序 MySQL odbc 数据库连接错误:在引发"otl_tmpl_exception<>"实例后终止调用
- 无法使用 SWIG 在 Python 中实例化C++类(获取属性错误)
- 在抛出 'std::runtime_error' 的实例后终止调用 what(): Filebuf 和 ostream 的 I/O 错误
- gcc出现不明确的模板实例化错误
- 结构数组的构造函数错误,错误消息:没有构造函数实例与参数列表匹配
- 尝试实例化模板类的对象时出现"No Matching Constructor"错误
- 返回实例变量的c++方法可以访问变量中的数据,但不能更改它,但在编译时不会生成错误
- 使用to_string、reverse、stoi组合的C++反转编号给出运行时错误实例超出范围
- 无法实例化抽象类错误
- C++ Visual Studio 重载函数错误:没有重载函数的实例与指定的类型匹配
- 错误 C2280 / 在 std::vector 中实例化对象时复制构造函数出现问题?
- 为什么自删除的全局 Vulkan 实例仅在添加层时才导致段错误?
- "if (argc < 2 || argc > 2)"应该有 2 个参数吗?&终止在抛出'std::out_of_range'错误实例后调用
- 包含iostream时的自定义类时间的错误实例