我想写一些驱动程序来使用下面的一个类:但是我不能理解这个类的声明和如何使用它。我想要理解这个类并使用它,所以我想学习什么来深刻地理解这个类。在进阶时谢谢!
typedef void (*pvoidf_t)(void);
/* A class for storing and calling a pointer to a static or member void function */
class FunctionPointer {
public:
FunctionPointer(void (*function)(void) = 0);
/** Create a Fun
我正在处理来自camera的示例代码,我在获取“CSampleCaptureEventHandler类之外”的框架数据时遇到了问题。
class DahengCamera : public QObject
{
Q_OBJECT
class CSampleCaptureEventHandler : public ICaptureEventHandler
{
void DoOnImageCaptured(CImageDataPointer& objImageDataPointer, void* pUserParam)
假设我有一个具有私有构造函数的类,该类将用于表示单个对象。假设我有一些不想使用作用域解析操作符访问的非静态成员。我已经注意到我可以通过创建一个指向类类型的指针来实现这一点。我想知道为什么我可以声明指向那个类的指针,即使默认构造函数是私有的?下面是一个示例程序。 // Example program
#include <iostream>
#include <string>
class OnlyOne{
public:
void Location(){
std::cout<<10<<std::endl;
嗨,我有一个关于this指针的问题,什么时候构造一个对象,什么时候初始化它?这意味着,我什么时候可以使用它?虚表是在构造函数中构造的,和this指针一样吗?
例如,我有一个这样的代码。输出是8。这是否意味着在进入构造函数之前,this指针已经被初始化了?
class A{
public:
A() { cout<<sizeof(*this);}
int i;
int *p;
};
int main() {
A a;
}
如果是真的,那么在进入构造函数之前还会发生什么呢?
如果不是,this指针是什么时候初始化的?
我试图从成员函数进行一些回调,一切都很好,直到我尝试使用一个从2个类派生的模板类作为回调对象时,我得到了以下错误:
error C2440: 'reinterpret_cast' : Pointers to members have different representations; cannot cast between them
这件事告诉我成员函数指针有不同的表示(doh!)
这些表示是什么?它们之间的区别是什么?
在g++ (5.1版)下,我有一个关于访问声明的问题。
class Base
{
public:
void doStuff() {}
};
class Derived : private Base
{
public:
// Using older access declaration (without using) shoots a warning
// and results in the same compilation error
using Base::doStuff;
};
template<class C, typename Func>
我正在尝试理解继承,我需要一些帮助来构建两个类。第一个称为A,第二个称为B。A有一个私有整数值"m_a“。它有两个构造器,默认的构造器将m_a设置为5,另一个构造器以名为m的整数作为参数,并将m_a的值设置为m。第一个将返回m_a,第二个将打印"Hello from A!“。B将有一个私有字符串m_s,一个默认构造函数,它将m_s设置为"asd“,或者设置为除空字符串以外的任何值,还有一个构造函数,它将一个字符串作为参数,并将m_s设置为它的值。就函数而言,首先,B将有一个返回m_s的函数。它将有一个与A中打印"Hello from A“函数同名的函数,该函数将
class A
{
public:
A(){ val = 0; p = new int; *p = 0; }
//void fun_1()const{ val = 1; } not allowed
void fun_2()const{ *p = 1; }
void display()const{ cout<< val <<' '<< *p <<endl; }
private:
int val;
int * p;
};
int main()
{
const A a;
boost::bind在许多情况下都非常方便。其中之一是分派/发布方法调用,以便io_service在以后可能的情况下进行调用。
在这种情况下,boost::bind的行为正如人们可能坦率地预期的那样:
#include <boost/asio.hpp>
#include <boost/bind.hpp>
boost::asio::io_service ioService;
class A {
public: A() {
// ioService will call B, which is private, how?
我的头文件如下所示:
class A
{
public:
A();
A(A const & other);
private:
class B
{
public:
B * child;
int x;
int y;
void copy( B * other);
};
B * root;
void copy( B * other);
};
而我的cpp文件是:
A::A()
{
root = NULL;
}
A::A(A const & other)
{
if (other.root == NULL)
{
我的目标是通过最小化包含来减少编译时间,同时保持对类范围内内存分配的控制。
实例逼近
Foo.h
#include "Bar.h" //unneccessary if only number is used in a given source file
struct Foo
{
Bar bar;
int number;
};
常量指针逼近
Foo.h
struct Bar; //no include, to use Bar Bar.h must also be included
struct Foo
{
Bar *const bar;
int n
在Delphi中,我创建了一个类,其目的是从数据库中读取记录。这个记录是纯只读的,在阅读之后,我需要导出一些额外的属性。我的问题与我想在类定义中使用的Stringlist有关。我有一个名为fVENDORS_TO_COLORCODE的私有类成员。这是一个逗号分隔的字符串。我想要建立一个属性是一个TStringlist。我使用TStringList.CommaToText将我的值加载到字符串列表中。我在Constructor中这样做。我遇到的问题是,虽然StringList在构造函数中是有效的,但它在构造函数之外是零的,而且我不知道我做错了什么。下面是代码的相关部分。
type
TProfil
我的情况类似于,其中有两个类共享一个公共接口函数,因此我将该函数(示例中的manage_data_in_memory())提取到两个类继承的基类中。然而,这两个类在其他方面是不相关的,其中一个是多态的,而另一个不是。也不期望有人声明这个基类的一个对象,因为它的存在只是为了防止代码重复(有什么方法可以强制执行吗?)我知道纯虚拟函数可以阻止对象被实例化,但是声明一个在派生类中不做任何操作的虚拟纯虚拟函数似乎是错误的设计)。
在这种情况下,基类析构函数需要是虚拟的吗?这将迫使另一个派生类也具有一个不需要的虚拟析构函数。谢谢。
所以现在我有了表格中的代码
class base { // don
当定义一个指向从基类私有继承的函数的成员函数指针时,您将如何声明它?
例如..
// class B defined here
class A; //forward dec
typedef void (B::*fnc_ptr)(); // This? or..
typedef void (A::*fnc_ptr)(); // this...?
class A: private B{
public:
A(): ptr(0){};
~A(){};
using B::fnc;
void setandcall(){