gpt4 book ai didi

c++ - boost::any_cast 到我的自定义类

转载 作者:行者123 更新时间:2023-11-30 05:00:01 25 4
gpt4 key购买 nike

我是一些增强功能的新手,我在尝试将对 boost::any 的引用转换为对自定义类的引用时遇到一些问题(现在它是空的,我仍在弄清楚的内容类)。

很快,我有:

class MyClass
{
public:
MyClass();
~MyClass();
private:
}

MyClass function(boost::any &source)
{
if (source.type() == typeid(MyClass))
return boost::any_cast<MyClass>(source);
}

我还没有实现构造函数和析构函数,所以它们仍然是默认的。

编译时(在 Visual Studio 2017 中)我收到以下消息:

Severity Code Description Project File Line Suppression State Error LNK2001 unresolved external symbol "public: __thiscall MyClass::~MyClass(void)" (??1MyClass@@$$FQAE@XZ) NativeToManagedBridge C:\bridge_library\testCli_sources\NativeToManagedBridge\anyHelper.obj 1

最佳答案

您已分别使用 MyClass();~MyClass();声明您的默认构造函数和析构函数。这是什么意思?你在告诉构造函数; “请不要为我实现构造函数或析构函数,我会实现”。如果现在,您不定义它们,您将得到您所看到的链接器错误,因为编译器不知道在哪里可以找到您的析构函数的定义。您可以通过多种方式解决此问题:

  1. 明确告诉构造函数使用默认定义:MyClass() = default
  2. 不要列出构造函数声明以允许编译器自动定义它。
  3. 定义您的构造函数:MyClass() {}

您可以阅读更多关于 definition and declaration here. 的信息

关于c++ - boost::any_cast 到我的自定义类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50963940/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com