C++ 共享的ptr<;我的班级>;对象将不会被接受为纯虚拟基类中的myclass方法参数

C++ 共享的ptr<;我的班级>;对象将不会被接受为纯虚拟基类中的myclass方法参数,c++,parameter-passing,shared-ptr,circular-dependency,pure-virtual,C++,Parameter Passing,Shared Ptr,Circular Dependency,Pure Virtual,我试图在纯虚拟类中声明一个方法 class myclass { virtual void mymethod(const myclass_vector & arg); virtual void abstract_method() = 0; }; typedef std::shared_ptr<myclass> myclass_p; typedef std::vector<myclass_p> myclass_vector; class-myclass

我试图在纯虚拟类中声明一个方法

class myclass
{
   virtual void mymethod(const myclass_vector & arg);
   virtual void abstract_method() = 0;
};

typedef std::shared_ptr<myclass> myclass_p;
typedef std::vector<myclass_p> myclass_vector;
class-myclass
{
虚空mymethod(const myclass_vector&arg);
虚空抽象_方法()=0;
};
typedef std::shared_ptr myclass_p;
typedef std::vector myclass_vector;
我不能用C++中常用的方法来解决循环性。我得到的错误取决于我如何向前声明类和typedef(我也尝试将它们转换为类定义),例如,“字段myclass_vector_实例的类型myclass_vector不完整”,还有“声明冲突”错误和链接错误

比如说,

class myclass;
typedef std::shared_ptr<myclass> myclass_p;
typedef std::vector<myclass_p> myclass_vector;

class myclass
{
   virtual void mymethod(const myclass_vector & arg);
   virtual void abstract_method() = 0;
};
class-myclass;
typedef std::shared_ptr myclass_p;
typedef std::vector myclass_vector;
类myclass
{
虚空mymethod(const myclass_vector&arg);
虚空抽象_方法()=0;
};
这是行不通的

我猜“std::shared_ptr”需要提前知道它将指向的对象的大小


有什么想法吗?

如果你已经完成了类的前向声明。你的例子应该有用。 例如,下面的示例正在运行

#include<iostream>
#include<vector>
#include <string>
#include<memory>
using namespace std;
class myclass; //forward declaration 
typedef std::shared_ptr<myclass> myclass_p;
typedef std::vector<myclass_p> myclass_vector;

class myclass
{
   virtual void mymethod(const myclass_vector & arg);
   virtual void abstract_method() = 0;
};
int main()
{
    myclass_p A;
}
#包括
#包括
#包括
#包括
使用名称空间std;
类myclass//远期申报
typedef std::shared_ptr myclass_p;
typedef std::vector myclass_vector;
类myclass
{
虚空mymethod(const myclass_vector&arg);
虚空抽象_方法()=0;
};
int main()
{
myclass_p A;
}

确保所有标题都已准备就绪。共享ptr在“包含”中定义。它应该正常工作。请告诉我您面临的确切错误?

@JamesRootL您应该将该代码作为答案发布。我想,将OP代码的副本发布作为答案对lulz有好处。对不起,我错过了“内存”。共享ptr在“包含”中定义1.现在可以用了,谢谢!该错误源于缺少标题和未定义抽象方法()的链接器。谢谢你的例子:D