小编Osw*_*ald的帖子

多态性:如何访问派生类成员函数?

假设我们有一个来自抽象基类的派生类.指向抽象基类的指针在main中声明,并通过"new"分配给派生类.如何从指向基类的指针(而不是派生类的对象)访问派生类的成员函数?

例:

#include <iostream>
using namespace std;

class clsStudent
{
public:
   virtual void display() = 0;// {cout<<"Student\n";}
};

class clsInternational : public clsStudent
{
public:
   void display(){cout<<"International\n";} 
   void passportNo(){cout<<"Pass\n";}
};

class local : public clsStudent
{
public:
   void display(){cout<<"International\n";}
   void icNo(){cout<<"IC\n";}
};


int main()
{
   clsStudent * s = new clsInternational;
   clsStudent * s2 = new local;

   s->display(); 
   s->passportNo();  //This won't work

   return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++ oop polymorphism

4
推荐指数
1
解决办法
1720
查看次数

在MVC应用程序中使用Open OpenId

我之前从未做过openid应用程序.我确实看到MVC 5有一些内置的oauth标志.我能够让这些工作没问题,因为它们已经建成了.

但我完全不确定如何让蒸汽openid在MVC中工作.有没有人有一些MVC Steam OpendID的示例代码?或者有人知道一个很好的教程吗?

openid asp.net-mvc steam

3
推荐指数
1
解决办法
3653
查看次数

从基类扩展派生类中的多态性

我有一个基类A,另一个B公开派生自类'A'的类和一个main函数:

#include <iostream>

class A  
{
public:  
    void add(int x,int y){std::cout<<x+y;}
};

class B:public A
{
public:
    void add(int *x,int *y){std::cout<<*x+*y;}
};

int main()
{
    B t;
    int p=5,q=6;
    t.add(p,q);
}
Run Code Online (Sandbox Code Playgroud)

上面的程序无法编译,我能够理解addA类中的函数隐藏在B类中的原因.

我的问题是,我如何实现上述任务?我想在派生类中添加一个函数定义,其名称与基类中的某个函数相同.该功能的参数列表将有所不同.

c++

2
推荐指数
1
解决办法
85
查看次数

C语言:递归#include

我遇到了这样一段代码:

啊:

#include "b.h"
/* structure definitions, macros etc. */
Run Code Online (Sandbox Code Playgroud)

BH:

    #include "a.h"
/* structure definitions, macros etc. */
Run Code Online (Sandbox Code Playgroud)

从C标准来看这是合法的吗?我认为这种方法并不安全.

c programming-languages

1
推荐指数
2
解决办法
2475
查看次数

将指针传递给新运算符

这段代码意味着什么?根据此链接,无法将指针传递给new运算符.new这里的运算符是默认运算符,而不是重载运算符.请帮忙

LPVOID m_Buffer;
MyClass* mc = new(reinterpret_cast<void*>(m_Buffer)) MyClass;
Run Code Online (Sandbox Code Playgroud)

c++ winapi memory-management

1
推荐指数
1
解决办法
143
查看次数

C++ - 在类contructor的调用中使用在类中声明的枚举

我是C++的新手,我创建了一个类头(PID.h),如下所示:

class PID
{
public:
    PID(double newSetpoint,
        double newOutputMax,
        PID::Direction newDirection,
        PID::Mode newMode,
        PID::Reference newReference);

    enum Direction { DIRECT = 0, REVERSE = 1 };
    enum Mode { MANUAL = 0, AUTOMATIC = 1 };    
    enum Reference { LINEAR = 0, CIRCULAR = 1 };  

    // class continues...
};
Run Code Online (Sandbox Code Playgroud)

Visual Studio 2010在类构造函数中显示方向,模式和引用,标记为"类PID没有方向指示"的错误(其他两个相同).

在PID.cpp中,它用红色标记构造函数名称

错误C2511:'PID :: PID(double,unsigned int,double,double,double,double,double,PID :: Direction,PID :: Mode,PID :: Reference)':在'PID'中找不到重载的成员函数

有谁知道发生了什么?为什么我不能用类在类中声明的枚举来调用类的构造函数?

c++ enums

-1
推荐指数
1
解决办法
93
查看次数