我正在寻找一些示例代码,演示如何使用Lucene.Net和C#索引PDF文档.谷歌出现了一些,但没有一个,我觉得有帮助.
我试图在C++中实现一个DateTime类:
class DateTime {
public:
DateTime();
DateTime(time_t ticks);
DateTime(int day, int month, int year);
DateTime(int day, int month, int year, int hour, int minute, int second);
//...
private:
time_t ticks;
int day;
int month;
//...
}
Run Code Online (Sandbox Code Playgroud)
然后在申请中:
DateTime date1; //default constructor
Run Code Online (Sandbox Code Playgroud)
我知道c ++需要一个默认的构造函数,但是在这种情况下我该如何实现呢?
它应该将所有属性设置为0吗?这会让所有其他方法都有效,但看起来并不直观......
它应该只是让所有属性都未初始化吗?这将使它的方法都不起作用,但它似乎比0更直观,因为你还没有做任何事情.
它应该设置内部,bool initialized=false然后所有方法检查之前操作吗?
我对这一点不太确定.这样做有"标准"的方法吗?
我的编译器对我实现模板方法的方式不满意.它为这些实现提供了大量错误消息,如"未定义类型T".
这是我的第一个方法,它是在类块之外实现的:
class VectorConvertor
{
public:
// ...
template <class T>
static void ReverseVectorElements(std::vector<T> & Vector);
// ...
};
template <class T>
void VectorConvertor::ReverseVectorElements(std::vector<T> & Vector)
{
std::vector<T>::size_type size = Vector.size();
T swap;
for (std::vector<T>::size_type i=0; i<size/2; i++)
{
swap = Vector.at(i);
Vector.at(i) = Vector.at(size-1-i);
Vector.at(size-1-i) = swap;
}
}
Run Code Online (Sandbox Code Playgroud)
另一个是这个; 这次方法是在类中实现的:
class ElementaryMath
{
public:
// ...
template <class T> static char sign(T num)
{
return (num >= static_cast<T>(0)) ? static_cast<char>(+1) : static_cast<char>(-1);
}
// ...
} …Run Code Online (Sandbox Code Playgroud) 假设我们有以下内容:
IFirst = Interface(IUnknown)
function GetStuff: Integer;
end;
ISecond = Interface(IUnknown)
function GetOtherStuff: Integer;
end;
TFirstSecond = class(TInterfacedObject, IFirst, ISecond)
private
function GetStuff: Integer; //implementation of IFirst
function GetOtherStuff: Integer; //implementation of ISecond;
end;
Run Code Online (Sandbox Code Playgroud)
我从来不喜欢在TInterfacedObject中似乎没有办法区分哪些方法实现哪些接口.我错过了什么吗?有没有人知道代码的方式结构呢?要指定GetStuff是IFirst和GetOtherStuff的实现是ISecond的实现吗?('发表评论'不是我正在寻找的答案......)
我知道我可以使用'implements'指令为每个接口定义TFirstSecond中的属性,并将实现委托给TFirstSecond中包含的实例,从而隔离所有内容.但我想要一条捷径......
我编写了以下模块但不确定如何引用"last"和"head"节点.以及将下一个节点的地址存储在前一节点的"{nextNode}"中.
我试图在存储它时保存类的引用,但后来它抱怨:"不是List.pm中的HASH引用"; 我明白为什么但不确定语法是怎样的.
如果我取消引用$ head和$ last($$ last - > {nextNode} =\$ class),那么我认为它正在使用我的类的实际名称; 列出而不是我想要的上一个对象.
package List;
my $head = undef;
my $last = undef;
sub new {
my $class = shift;
# init the head of the list
if ($head == undef) {
$head = \$class;
print "updated head to:$head", "\n";
}
$last = \$class;
$last->{nextNode} = \$class; # update previous node to point on this new one
print "updated last to:$last", "\n";
my $self = {};
$self->{value} = shift;
$self->{nextNode} …Run Code Online (Sandbox Code Playgroud) 的<chrono>报头定义类steady_clock表示单调时钟-即,的值now()永远不会降低作为物理时间增加.虽然这个类没有标记为可选,所以如果实现无法实现它会发生什么,因为它在没有单调时间源的系统上运行?
在_GLIBCXX_USE_CLOCK_MONOTONIC未定义的情况下,查看libstdc ++源代码steady_clock只需通过以下方式定义:
typedef system_clock steady_clock;
Run Code Online (Sandbox Code Playgroud)
system_clock虽然不一定稳定,所以这可能(也可能会)打破要求steady_clock.
在没有单调时间源的系统上,C++ 11的符合实现是不可能的吗?为什么steady_clock不像intX_t类型那样选择?
我有一个名为的接口IStructuredReader,它从文件中读取一些结构化数据并将其显示在表单中.它有一个名为的成员Sync(),在实现时,扫描数据以获取用户指定的数据模式.
某些实现IStructuredReader没有同步功能.那些实现抛出NotImplementedException了该Sync()方法.我希望能够检查这个方法是否正在实现,这样我就可以调整表单上的按钮,如果不是的话.
我可以想到一些可以做到这一点的方法,所有这些方法看起来都很笨拙和复杂:
将Sync方法分离到自己的接口,为那些支持该功能的实现继承它,并尝试将reader对象强制转换为它以识别该功能,
写一个NotImplementedAttribute,用它装饰成员,并使用Reflection检查属性的存在,
HasSyncCapability向接口添加布尔属性.
有没有规范的方法呢?
我有一个Java接口
public interface SampleInterface extends Serializable {
Long getId();
void setId(Long id);
}
Run Code Online (Sandbox Code Playgroud)
和应该实现它的Kotlin类
open class ClazzImpl() : SampleInterface
private val id: Unit? = null
fun getId(): Long? {
return null
}
fun setId(id: Long?) {
}
Run Code Online (Sandbox Code Playgroud)
但是我得到一个编译错误:
类ClazzImpl不是抽象的,并且没有实现抽象成员public abstract fun setId(id:Long!):在com .... SampleInterface中定义的单元
任何想法有什么问题吗?
implementation ×10
c++ ×3
interface ×3
c# ×2
algorithm ×1
c ×1
c++-chrono ×1
c++11 ×1
class ×1
constructor ×1
delegation ×1
delphi ×1
java ×1
kotlin ×1
list ×1
lucene.net ×1
methods ×1
perl ×1
python ×1
python-2.7 ×1
smoothing ×1
templates ×1
time ×1