这样声明的函数在另一个cpp里怎么调用?

时间:2022-09-29 15:18:05
namespace SS
{

class SSElement
{
public:
SSElement()
{
i=0;
m_key=NULL;
m_findkey=NULL; 
}
virtual int FormatText(CStdString* str)
{



以上代码我想调用formattext,可是不行?也不能被实例化。伤不起啊!

16 个解决方案

#1


你在调用的时候指明名字空间没有?

#2


指明了

#3


引用这个头文件,
SS::SSElement obj;
obj.FormatText() 调用函数。。。

#4


#include "头文件"
SS::SSElement a;
这样不行?
那是否SSElement 中有纯虚函数?

#5


引用 3 楼 dizuo 的回复:
引用这个头文件,
SS::SSElement obj;
obj.FormatText() 调用函数。。。


error C2259: “SS::SSElement”: 不能实例化抽象类

#6


你还是把你的错误信息贴出来吧

#7


那你的SSElement里面有纯虚函数呀
1是你把代码全贴出来
1是你自己去查下纯虚函数的知识

#8


引用 5 楼 liulcsy 的回复:
引用 3 楼 dizuo 的回复:
引用这个头文件,
SS::SSElement obj;
obj.FormatText() 调用函数。。。


error C2259: “SS::SSElement”: 不能实例化抽象类

晕死,那就是SSElement中有纯虚函数,只能使用指针,不能实例化对象。。。

#9


引用 8 楼 dizuo 的回复:
引用 5 楼 liulcsy 的回复:

引用 3 楼 dizuo 的回复:
引用这个头文件,
SS::SSElement obj;
obj.FormatText() 调用函数。。。


error C2259: “SS::SSElement”: 不能实例化抽象类

晕死,那就是SSElement中有纯虚函数,只能使用指针,不能实例化对象。。。


请问怎么使用指针?

#10



#include <iostream>
namespace ss
{
    class first
    {
        public:
        virtual void display()
        {
            std::cout<<"first"<<std::endl;
        }
    };
    class second:public first
    {
        public:
        virtual void display()
        {
            std::cout<<"second"<<std::endl;
        }
    };
}
int main()
{
    ss::first A;
    A.display();
    ss::second B;
    B.display();
}


这样使用没有错误的

#11


SS::SSElement* pBase;
但是pBase只能指向SSElement的实现了纯虚接口的派生类中 的对象,

#12


这样声明的函数在另一个cpp里怎么调用?
纯虚函数啊?晕死,自己找找有没有吧!

#13


我在类里使用了一句:

virtual	operator CStdString()=0;

#14


我不修改原来的函数下,怎么调用?都用指针吗?

#15


在许多情况下,在基类中不能对虚函数给出有意义有实现,而把它说明为纯虚函数,它的实现留给该基类的派生类去做。这就是纯虚函数的作用。

#16


你为什么要调用基类的纯虚函数呢?
纯虚函数本来就是作为接口,提供给派生类使用的,派生类里要实现这个函数,既然已经将他设为纯虚函数了,就说明基类不需要直接调用这个函数,否则就是设计有问题。
要是通过指向派生类的指针去调用,那也调用的是派生类实现的,也不能调用基类的啊。
以上基类均指你的含有纯虚函数的类。

#1


你在调用的时候指明名字空间没有?

#2


指明了

#3


引用这个头文件,
SS::SSElement obj;
obj.FormatText() 调用函数。。。

#4


#include "头文件"
SS::SSElement a;
这样不行?
那是否SSElement 中有纯虚函数?

#5


引用 3 楼 dizuo 的回复:
引用这个头文件,
SS::SSElement obj;
obj.FormatText() 调用函数。。。


error C2259: “SS::SSElement”: 不能实例化抽象类

#6


你还是把你的错误信息贴出来吧

#7


那你的SSElement里面有纯虚函数呀
1是你把代码全贴出来
1是你自己去查下纯虚函数的知识

#8


引用 5 楼 liulcsy 的回复:
引用 3 楼 dizuo 的回复:
引用这个头文件,
SS::SSElement obj;
obj.FormatText() 调用函数。。。


error C2259: “SS::SSElement”: 不能实例化抽象类

晕死,那就是SSElement中有纯虚函数,只能使用指针,不能实例化对象。。。

#9


引用 8 楼 dizuo 的回复:
引用 5 楼 liulcsy 的回复:

引用 3 楼 dizuo 的回复:
引用这个头文件,
SS::SSElement obj;
obj.FormatText() 调用函数。。。


error C2259: “SS::SSElement”: 不能实例化抽象类

晕死,那就是SSElement中有纯虚函数,只能使用指针,不能实例化对象。。。


请问怎么使用指针?

#10



#include <iostream>
namespace ss
{
    class first
    {
        public:
        virtual void display()
        {
            std::cout<<"first"<<std::endl;
        }
    };
    class second:public first
    {
        public:
        virtual void display()
        {
            std::cout<<"second"<<std::endl;
        }
    };
}
int main()
{
    ss::first A;
    A.display();
    ss::second B;
    B.display();
}


这样使用没有错误的

#11


SS::SSElement* pBase;
但是pBase只能指向SSElement的实现了纯虚接口的派生类中 的对象,

#12


这样声明的函数在另一个cpp里怎么调用?
纯虚函数啊?晕死,自己找找有没有吧!

#13


我在类里使用了一句:

virtual	operator CStdString()=0;

#14


我不修改原来的函数下,怎么调用?都用指针吗?

#15


在许多情况下,在基类中不能对虚函数给出有意义有实现,而把它说明为纯虚函数,它的实现留给该基类的派生类去做。这就是纯虚函数的作用。

#16


你为什么要调用基类的纯虚函数呢?
纯虚函数本来就是作为接口,提供给派生类使用的,派生类里要实现这个函数,既然已经将他设为纯虚函数了,就说明基类不需要直接调用这个函数,否则就是设计有问题。
要是通过指向派生类的指针去调用,那也调用的是派生类实现的,也不能调用基类的啊。
以上基类均指你的含有纯虚函数的类。