假设我们有一个来自抽象基类的派生类.指向抽象基类的指针在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) 我之前从未做过openid应用程序.我确实看到MVC 5有一些内置的oauth标志.我能够让这些工作没问题,因为它们已经建成了.
但我完全不确定如何让蒸汽openid在MVC中工作.有没有人有一些MVC Steam OpendID的示例代码?或者有人知道一个很好的教程吗?
我有一个基类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类中的原因.
我的问题是,我如何实现上述任务?我想在派生类中添加一个函数定义,其名称与基类中的某个函数相同.该功能的参数列表将有所不同.
我遇到了这样一段代码:
啊:
#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标准来看这是合法的吗?我认为这种方法并不安全.
这段代码意味着什么?根据此链接,无法将指针传递给new运算符.new这里的运算符是默认运算符,而不是重载运算符.请帮忙
LPVOID m_Buffer;
MyClass* mc = new(reinterpret_cast<void*>(m_Buffer)) MyClass;
Run Code Online (Sandbox Code Playgroud) 我是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'中找不到重载的成员函数
有谁知道发生了什么?为什么我不能用类在类中声明的枚举来调用类的构造函数?