这是今天零系列对象和子对象系列中的第三个问题.标准明确暗示成员子对象不能具有零大小,而基类子对象可以.
struct X {}; //empty class, complete objects of class X have nonzero size
struct Y:X { char c; }; //Y's size may be 1
struct Z {X x; char c;}; //Z's size MUST be greater than 1
Run Code Online (Sandbox Code Playgroud)
为什么不允许零大小的成员子对象只是像零大小的基类子对象?
TIA
在Konrad的回答之后编辑:考虑以下示例:
struct X{};
struct D1:X{};
struct D2:D1, X {}; //D2 has 2 distinct subobjects of type X, can they both be 0 size and located at the same address?
Run Code Online (Sandbox Code Playgroud)
如果两个相同类型X的基类子对象(如我的示例中)可以位于同一地址,那么应该能够成员子对象.如果他们不能,那么编译器会特别处理这种情况,因此它可以特别处理Konrad的示例(请参阅下面的答案),如果同一类中有多个相同类型,则不允许零大小成员子对象.我哪里错了?
我想创建一个存储过程,它将匹配两个表.我的要求是根据用户传递的列作为输入匹配两个表.
句法:
CREATE PROCEDURE reconcile.matchTables(
IN TAB1 VARCHAR(25),
IN TAB1 VARCHAR(25),
IN COLS1 VARCHAR(250) ,
IN COLS2 VARCHAR(250))
Run Code Online (Sandbox Code Playgroud)
EX:
matchTables('table1', 'table2', 'col1#col2#col3#col4' , 'col2#col13#col1#col8')
Run Code Online (Sandbox Code Playgroud)
现在,存储过程应该像下面那样形成where子句
table1.col1 = table2.col2
and table1.col2 = table2.col13
and table1.col3 = table2.col1
and table1.col4 = table2.col8
Run Code Online (Sandbox Code Playgroud) 我想(在*nix中)分配一个大的,有条不紊的地址空间,但不会立即消耗资源,即我想保留一个地址范围,以后再分配它.
假设我做foo = malloc(3*1024*1024*1024)来分配3G,但是在1G计算机上有1G的交换文件.它会失败,对吗?
我想要做的是说"给我一个内存地址范围foo ... foo + 3G 我将分配 ",所以我可以保证这个区域内的所有分配都是连续的,但没有直接分配.
在上面的例子中,我想跟随一个bar = malloc(123)调用的foo = reserve_memory(3G)调用,该调用应该成功,因为reserve_memory尚未消耗任何资源,它只是保证bar不在范围内烟草工业富+ 3G.
稍后我会做一些像allocate_for_real(foo,0,234)那样消耗foo范围的字节0..234.此时,内核将分配一些虚拟页面并将它们映射到foo ... foo + 123 + N.
这在用户空间是否可行?
(关键在于foo中的对象需要连续,并且在创建后无法合理地移动.)
谢谢.
我有一个现有的类Image,在我的应用程序中广泛使用.我需要将一个通用的图像列表(List)返回到前端,但由于3ed方DB中没有存储过程,我正在查询我需要使用Linq to Sql.
我已经在我的DAL中创建了一个我正在查询的数据库的dbtm文件,如下所示:
ImageCat
ImageId
Name
Width
DateModified
Height
CatId
Run Code Online (Sandbox Code Playgroud)
我的Image类如下
public class Image
{
public int Id { get; set; }
public string Name { get; set; }
public int Width { get; set; }
public int Height { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我的Linq to Sql如下:
var imageList = (from ic in db.ImageCats
where ic.CatID.Contains(category)
select ic).ToList();
var finalImageList = new List<Image>();
foreach (ImageCat ic in imageList)
{
Image image = new Image();
image.Id= ic.ImageID;
image.Height = (int)ic.Height; …Run Code Online (Sandbox Code Playgroud) 这可能是一个简单明了的事情,我只是没有看到,但如何在MIPS64处理器中加载地址?在MIPS32处理器中,以下汇编程序伪指令:
la $at, LabelAddr
Run Code Online (Sandbox Code Playgroud)
扩展到:
lui $at, LabelAddr[31:16]
ori $at,$at, LabelAddr[15:0]
Run Code Online (Sandbox Code Playgroud)
看一下MIPS64指令集,我看到lui仍然会在32位字的上半部分加载一个16位立即数.似乎没有任何类型的扩展指令将立即加载到64位字的上部区域.那么,似乎要做一个la伪指令的等价物,我需要扩展到代码中,例如:
lui $at, LabelAddr[63:48]
ori $at, $at, LabelAddr[47:32]
sll $at, 16
ori $at, $at, LabelAddr[31:16]
sll $at, 16
ori $at, $at, LabelAddr[15:0]
Run Code Online (Sandbox Code Playgroud)
这让我觉得有点......因为加载一个地址这样基本的东西令人费解,所以它让我确信我忽略了一些东西.
我忽略了什么(如果有的话)?
Dupe:WPF动画启动画面
我想为我的WPF应用程序显示一个启动画面.我想要做的是在从文件加载字典时显示它(加载大约需要5-6秒).有没有办法在WPF中实现这一目标?我会很感激一些教程,因为这比我发布的其他问题要复杂一些.
在处理xml文件时是否可以跳过节点?例如:说我有以下xml代码:
<mycase desc="">
<caseid> id_1234 </caseid>
<serid ref=""/>
......
......
......
</mycase>
Run Code Online (Sandbox Code Playgroud)
我想让它看起来像这样:
<mycase desc="" caseid="id_1234">
.....
.....
</mycase>
Run Code Online (Sandbox Code Playgroud)
目前我这样做:
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet version="2.0" exclude-result-prefixes="xs xdt err fn"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:fn="http://www.w3.org/2005/xpath-functions"
xmlns:xdt="http://www.w3.org/2005/xpath-datatypes"
xmlns:err="http://www.w3.org/2005/xqt-errors">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="mycase">
<xsl:element name="mycase">
<xsl:attribute name="desc"/>
<xsl:attribute name="caseid">
<xsl:value-of select="caseid"/>
</xsl:attribute>
<xsl:apply-templates/>
</xsl:element>
</xsl:template>
......
......
Run Code Online (Sandbox Code Playgroud)
这确实创造了我想要的东西,但因为<xsl:apply-templates/>它处理所有节点.虽然我希望它一起跳过处理caseid和serid.这也适用于其他节点,这些节点在新的XML结构中不可用.那么如何跳过我不想使用xslt处理的节点.
我正在尝试将这个很棒的 python 模块Python-Chrono安装到我的 python 环境中,但它至少在 python 2.4.3 和 2.6.6 中失败,并显示以下错误消息:
Traceback (most recent call last):
File "setup.py", line 30, in ?
import chrono
File "/home/janne/python-chrono-0.3.0/chrono/__init__.py", line 22
from . import calendar
^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)
设置使用相对导入机制,它应该可以正常工作,但在我的环境中它会导致此错误。
有没有办法解决这个问题?你在你的项目中看到过这种行为吗?
链接器错误:
$ make
g++ -Wall -g main.cpp SDL_Helpers.cpp Game.cpp DrawableObject.cpp `sdl-config --cflags --libs` -lSDL_mixer
/tmp/ccdxzrej.o: In function `Game':
/home/brett/Desktop/SDL/Game.cpp:16: undefined reference to `Player::Player(Game*)'
/home/brett/Desktop/SDL/Game.cpp:16: undefined reference to `Player::Player(Game*)'
collect2: ld returned 1 exit status
make: *** [all] Error 1
Run Code Online (Sandbox Code Playgroud)
main.cpp中:
#include "Game.h"
int main()
{
Game g;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
Game.h:
#ifndef BRETT_GAME_H
#define BRETT_GAME_H
#include <cmath>
#include "SDL.h"
#include "SDL_Helpers.h"
#include <vector>
class DrawableObject;
class Game
{
public:
SDL_Surface * screen;
std::vector<DrawableObject*> sprites;
Game();
};
#endif
Run Code Online (Sandbox Code Playgroud)
Game.cpp:
#include "Game.h" …Run Code Online (Sandbox Code Playgroud) 我想在Python中创建一套相互关联的包.我希望他们都在同一个包下,但可以作为单独的组件安装.
因此,例如,安装基础软件包将提供mypackage但是在mypackage.subpackage我单独安装之前不会有任何内容.
是否可以使用distutils和pip?