小编Ale*_*lex的帖子

使用`strict`在Perl中定义全局变量

我有以下包/文件结构:第一个:

# package1
package Package1;

use strict;
use warnings;

my @array = (1, 2, 3, 4);

return 1;
Run Code Online (Sandbox Code Playgroud)

第二个:

use strict;
use warnings;
use package1;

foreach $a (@array)
{
    print $a;    
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,我有以下错误:

全局符号"@array"需要Package1.pm中的显式包名称

我试图定义@arrayour,但它没有帮助.我也不能将它定义为公正@array,因为strict.

有没有合法的方法来制作全局变量strict

perl global-variables perl-package

2
推荐指数
1
解决办法
2523
查看次数

如何获得班级成员的价值?

有以下课程:

package MyClass;

use strict;
use warnings;

sub new
{
    my $class = shift();
    my $self = {
        _class_member => "default"
};

    bless ($self, $class);
    return $self;
}
Run Code Online (Sandbox Code Playgroud)

如何设置/获取值_class_member

我尝试了以下代码:

sub set_name
{
    my $self = shift();
    $self->_class_member = shift();
}
Run Code Online (Sandbox Code Playgroud)

但是我收到以下错误:

无法通过包"MyClass"找到对象方法"_class_member"...

我在这做错了什么?

perl class

2
推荐指数
1
解决办法
60
查看次数

Accurev更改工作区的名称

我需要重命名在accurev中创建的工作区.

如何使用accurev GUI或CLI?

在常规流的情况下,可以使用"更改流"选项,但是从工作空间开始,此选项不活动.

accurev

2
推荐指数
1
解决办法
2810
查看次数

在C++ 11中正确放置默认的纯虚析构函数

我有一个接口类,但我希望所有派生类都实现虚拟析构函数:

// Interface.h
class Interface {
    virtual ~Interface() = 0;
};

Interface::~Interface() = default;
Run Code Online (Sandbox Code Playgroud)

问题是在这种情况下,由于重复的符号,我有一个链接器错误.

我可以将定义放在.cpp文件中,但我想知道是否有更优雅的解决方案?

c++ virtual-destructor c++11

2
推荐指数
1
解决办法
212
查看次数

仅当指针不是nullptr时才调用方法

我有一个接口类和一个可能的指针,nullptr如果是,我只是跳过方法调用:

if (ptr != nullptr)
{
    ptr->SomeMethod();
}

...

if (ptr != nullptr)
{
    ptr->SomeOtherMethod();
}

...

if (ptr != nullptr)
{
    ptr->SomeMethodThatWasntMentionedBefore();
}
Run Code Online (Sandbox Code Playgroud)

更新: 以下不太正确:

我可以使用以下宏来改善此代码的可读性:

#define CALL_IF_NOT_NULLPTR(ptr, method_call) if (ptr != nullptr) { ptr->method_call; };

CALL_IF_NOT_NULLPTR(ptr, SomeMethod());
CALL_IF_NOT_NULLPTR(ptr, SomeOtherMethod());
CALL_IF_NOT_NULLPTR(ptr, SomeMethodThatWasntMentionedBefore());
Run Code Online (Sandbox Code Playgroud)

有没有办法在没有宏的情况下做同样的事情(C++11首选解决方案)?

有没有更好的方法?

c++ c++11

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

为什么&str没有实现IntoIterator?

我正在编写一个以通用方式实现前缀树的容器(键和值是通用参数).由于这个数据结构的性质,我需要密钥来拥有一个迭代器.

基本上根据这个问题,IntoIterator特征是造成这种可能性的原因,但并非所有结构都能实现它.例如&str,String不要实现它.

在这种情况下,如果IntoIterator标准类型没有实现,我该怎么办?

预期的API是

let mut t1 = Trie::new();
t1.insert(String::from("this"), 1);

let mut t2 = Trie::new();
t2.insert(vec![1, 2, 3], 1);
Run Code Online (Sandbox Code Playgroud)

rust

2
推荐指数
1
解决办法
235
查看次数

函数头后面的`const`是什么意思?

有一个class A,它有以下operator()实现:

void A::operator()(...parameters...) const 
{
    // operator body
}
Run Code Online (Sandbox Code Playgroud)

const是什么意思?

c++ syntax const

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

C代码说明

有一个以下函数可以在两个浮点值之间进行比较,但在某些特定情况下比常规比较更快(例如在Cortex-A8上)

int isGreater(float* f1, float* f2)
{
    int i1, i2, t1, t2;

    i1 = *(int*)f1; // reading float as integer
    i2 = *(int*)f2; // reading float as integer

    t1 = i1 >> 31;
    i1 = (i1 ^ t1) + (t1 & 0x80000001);

    t2 = i2 >> 31;
    i2 = (i2 ^ t2) + (t2 & 0x80000001);

    return i1 > i2;
}
Run Code Online (Sandbox Code Playgroud)

有人可以解释它是如何工作的吗?

c

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

如何获取结构中的元素总数

这是我的代码..

#include <stdio.h>

struct new {
    unsigned short b0 = 0;
    unsigned short b1 = 0;
    unsigned short b2 = 0;
    unsigned short b3 = 0;
    unsigned short b4 = 0;
    unsigned short b5 = 0;
    unsigned short b6 = 0;
    unsigned short b7 = 0;
};

int main()
{
    printf("Bit Field Example\n");
    struct new b; //Seems wrong to me
    int result = sizeof(b)/sizeof(*b); //Seems wrong to me
    printf("Size: %d\n", result);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我正在使用linux机器来编译提到的代码.我知道下面的行是错误的..

int result = sizeof(b)/sizeof(*b);
Run Code Online (Sandbox Code Playgroud)

但我不确定任何其他技术.首先,是否可以计算结构中元素的总数.请告诉我如何做到这一点. …

c struct

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

C++中的继承和指针

我有这个代码示例,我想了解它为什么会这样做.这是一篇介绍C++课程中过去的试卷的问题.我现在正在为考试而学习,并试图巩固我对班级继承的理解.

#include <iostream>
using namespace std;

class Bird {
  public:
    virtual void noise() { cout << "mumble" << endl; }
    void move() { noise(); cout << "fly" << endl; }
};

class Canary: public Bird {
  public:
    void noise() { cout << "chirp" << endl; }
    void move() { noise(); cout << "flap" << endl; }
};

class Tweety: public Canary {
  public:
    void noise() { cout << "tweet" << endl; }
    void move() { noise(); cout << "run" << …
Run Code Online (Sandbox Code Playgroud)

c++ polymorphism inheritance

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