问题列表 - 第32217页

如何使用类型参数选择成员变量?

我有一个缓存对象,缓存许多不同类型的对象,如下所示:

class Cache
{
public:
    ObjectTable<ObjTypeA> m_objACache;
    ObjectTable<ObjTypeB> m_objBCache;
    ObjectTable<ObjTypeC> m_objCCache;
};
Run Code Online (Sandbox Code Playgroud)

我目前正在使用缓存的(可怕)方式是直接访问缓存类属性"m_objACache"和"m_objBCache",如下所示:

Cache c;
c.m_objACache.getObjectWithid(objectBuffer, 1);
c.m_objACache.getObjectWithid(objectBuffer, 2);
c.m_objBCache.getObjectWithid(objectBuffer, 3);
Run Code Online (Sandbox Code Playgroud)

等等..

我希望能做的是这样的事情: -

class Cache
{
public:
    template <typename T>
    void getObjectWithId(T &objectBuffer, int id)
    {
        ObjectTable<T>.getObjectWithId(objectBuffer, id);
    }
};
Run Code Online (Sandbox Code Playgroud)

但显然这不起作用,因为我有" ObjectTable<T>"我需要一个变量名称,但我不能模板类变量 - 所以有没有办法可以做到这一点?或者,如果声明所有变量并按如下方式访问它,情况会如何:

class Cache
{
public:
    void getObjectWithId(ObjTypeA &objectBuffer, int id)
    {
        m_objACache.getObjectWithId(objectBuffer, id);
    }

    void getObjectWithId(ObjTypeB &objectBuffer, int id)
    {
        m_objBCache.getObjectWithId(objectBuffer, id);
    }

    void getObjectWithId(ObjTypeC &objectBuffer, int id)
    {
        m_objCCache.getObjectWithId(objectBuffer, id);
    }

protected:
    ObjectTable<ObjTypeA> m_objACache; …
Run Code Online (Sandbox Code Playgroud)

c++ oop templates design-patterns

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

为什么不允许复制构造函数和赋值运算符?

#undef GOOGLE_DISALLOW_EVIL_CONSTRUCTORS
#define GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(TypeName)    \
   TypeName(const TypeName&);                           \
   void operator=(const TypeName&)
Run Code Online (Sandbox Code Playgroud)

我是,从谷歌阅读开源代码.为什么不允许复制构造函数和赋值运算符?

c++

6
推荐指数
2
解决办法
4161
查看次数

接口方法作为事件处理程序

是否可以在 Delphi 2007 中使用接口方法作为事件处理程序?简单版本不起作用:

type
  TMyEvent = procedure of object;

  IMyInterface = interface
    procedure Handler;
  end;

  TMyClass = class(TInterfacedObject, IMyInterface)
  public
    procedure Handler;
  end;

var
  ev: TMyEvent;
  obj: TMyClass;
  intf: IMyInterface;
begin
  obj := TMyClass.Create;
  intf := obj;
  ev := obj.Handler; // compiles
  ev := intf.Handler; // <== Error E2010 (incompatible types)
end.
Run Code Online (Sandbox Code Playgroud)

将错误添加@Addr更改为 E2036(需要变量)。

更新:这个

procedure IntRefToMethPtr(const IntRef; var MethPtr; MethNo: Integer);
type
  TVtable = array[0..999] of Pointer;
  PVtable = ^TVtable;
  PPVtable = ^PVtable; …
Run Code Online (Sandbox Code Playgroud)

delphi interface event-handling delphi-2007

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

从表中获取最后一个记录ID的最安全方法

在SQL Server 2008及更高版本中,什么是最好/最安全/最正确的方法

  1. 从数据库表中检索ID(基于自动增量主键)?
  2. 检索其他列的最后一行的值(例如,SELECT TOP 1 FROM Table ORDER BY DESC)?

sql sql-server sql-server-2008

20
推荐指数
5
解决办法
10万
查看次数

打开后如何关闭模态表格?

从我的应用程序中我想打开一个对话框,在某些情况下应该立即关闭(在短消息之后).

我试过这个:

procedure TForm2.FormActivate(Sender: TObject);
begin
  if SomeCondition then
  begin
    ShowMessage('You can''t use this dialog right now.');
    close;
    modalresult := mrCancel;
  end;
end;
Run Code Online (Sandbox Code Playgroud)

但对话框保持打开状态.我也尝试将代码放在OnShow事件中,但结果是一样的.

为什么这不起作用?

delphi dialog

10
推荐指数
3
解决办法
2万
查看次数

改变枚举的数量是一个突破性的变化吗?

请考虑以下代码:

public enum SomeCode
{
     NIF = 0
    ,NIE = 1
    ,CIF = 2
    ,PAS = 3
    ,NIN = 4
    ,SSN = 5
    ,OTH = 5
    ,UKN = 6
}
Run Code Online (Sandbox Code Playgroud)

会改变OTH = 5OTH = 7一个突破性的变化吗?


编辑:我从不存储int值,只存储枚举的文本表示.它可能在其他DLL中使用,但会使用相同的存储.

c# enums

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

设置R绘制x轴以显示y = 0

通常当我绘制一些R线图并设置时ylim=c(0,some_value),x轴和y = 0之间的间距很小.

我希望y轴精确地显示在y = 0处,因此点(x,0)将绘制在y轴上(而不是在上面).

plot r

41
推荐指数
2
解决办法
6万
查看次数

数据库的层级和网络模型究竟存在什么问题?

在EF Codd于1970年发表他的论文"大型共享数据库的数据关系模型"之前,分层网络是数据库的两个主要模型.

他们究竟出了什么问题,他们没有占上风?

database database-design non-relational-database relational-database

4
推荐指数
2
解决办法
2752
查看次数

在Ruby中=== vs. ==

在Ruby中,==和===之间有什么区别?该RDoc的

Case Equality - 对于Object类,实际上与调用#==相同,但通常由后代重写以在case语句中提供有意义的语义.

#==一样的==吗?你能举例说明在case语句中何时/如何使用它?

ruby

68
推荐指数
3
解决办法
2万
查看次数

.find()比基本的后代选择方法快吗?

Paul Irish的博客中提到的幻灯片30 :

$('#container').find('div.robotarm') 比...更快 $('#container div.robotarm')

这是真的?

performance jquery jquery-selectors

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