标签: redefinition

PowerShell - 当覆盖与该函数同名的cmdlet名称时,如何在函数中调用cmdlet?

所以我有一个名为update-name的cmdlet,我没有权限进行更改.

我创建了一个名为update-name的函数(与cmdlet同名).如何从具有相同名称的函数中调用cmdlet?

我尝试过一些东西,但似乎都没有.

function update-name {
param([string] something)
  #call cmdlet update-name here
}
Run Code Online (Sandbox Code Playgroud)

当它只是功能时,有一种方法可以做到:

$unBackup = 'DefaultUpdateName'
if(!(Test-Path Function:\$unBackup)) {
    Rename-Item Function:\Update-Name $unBackup
}

function update-name {
  & $unName
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,如果它是CmdLet则不起作用.

powershell function cmdlet redefinition

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

单个类具有类重新定义错误

我是C++的新手,我在头文件中遇到了类定义问题.头文件(Student.h)的代码是:

#include <string>
using namespace std;

class Student
{
  // Data Members for a Student
  string id;
  string preferences[3];
  int skill;

  // Constructor
 public:
  Student(){}

 public:
  void SetID(string str)
  { this->id = str; }
 public:
  void SetSkill(int i)
  { this->skill = i; }
 public:
  void SetPreferences(int i, string s)
  {
    this->preferences[i] = s;
  }
};

class StudentSchedule
{
 public:
  StudentSchedule(){}
};
Run Code Online (Sandbox Code Playgroud)

编译器错误表示第14行(学生类)是'学生'的重新定义,第15行({ - 类学生后面的开放式大括号)是先前的'学生'定义.StudentSchedule类存在前两个连续行的相同错误.

我的编译中的任何地方都没有定义任何类的.c,.cpp或.h文件.我不知道为什么我会收到这个错误.

c++ class redefinition

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

Ansible集团的优先权

假设我在group_vars中有3个文件:

abc.yml
all.yml
xyz.yml
Run Code Online (Sandbox Code Playgroud)

并且在它们中定义了相同的变量:

- my_var: abc
- my_var: all
- my_var: xyz
Run Code Online (Sandbox Code Playgroud)

Ansible 文档说:

在任何部分中,重新定义var将覆盖先前的实例.如果多个组具有相同的变量,则加载的最后一个组获胜.如果你在play的vars:section中定义了两次变量,那么第二个获胜.

这是否意味着加载顺序是按字母顺序排列的,abc.yml具有最低优先级,而xyz.yml最高,或者它取决于组的顺序hosts

什么是装货单?


有趣的是,改变组中的组顺序hosts也是如此,但是以不可预测的方式.

我尝试运行ansible-playbook my_var.yml -c local(只返回变量值)的所有组合:

[all]
localhost

[xyz]
localhost

[abc]
localhost
Run Code Online (Sandbox Code Playgroud)

但我仍然无法弄清楚它是如何工作的.

variables redefinition ansible

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

如果重新定义内联函数怎么办?

我花了几天时间处理一个奇怪的问题,最后发现项目中有两个inline相同签名的功能,导致了问题.为了简化这种情况,这里有一个例子:两个cpp文件:

a.cpp

#include <iostream>

void b();

inline void echo()
{
    std::cout << 0 << std::endl;
}

int main()
{
    echo();
    b();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

和b.cpp

#include <iostream>

inline void echo()
{
    std::cout << 1 << std::endl;
}

void b()
{
    echo();
}
Run Code Online (Sandbox Code Playgroud)

请注意,inline功能echo具有相同的签名但不同的工具.编译并运行

g++ a.cpp b.cpp -o a.out && ./a.out
Run Code Online (Sandbox Code Playgroud)

或者像这样

g++ a.cpp -c
g++ b.cpp -c
g++ a.o b.o -o a.out
./a.out
Run Code Online (Sandbox Code Playgroud)

它打印0 0.(我正在使用g ++ 4.6.1,我用clang ++ 2.9测试,结果相同)

如果启用优化,就不会发生这种情况

g++ -O3 …
Run Code Online (Sandbox Code Playgroud)

c++ compiler-construction linker inline redefinition

8
推荐指数
3
解决办法
1660
查看次数

PHP特征 - 更改继承类中静态属性的值

所以,这是我的特点:

trait Cacheable
{
    protected static $isCacheEnabled = false;
    protected static $cacheExpirationTime = null;

    public static function isCacheEnabled()
    {
        return static::$isCacheEnabled && Cache::isEnabled();
    }

    public static function getCacheExpirationTime()
    {
        return static::$cacheExpirationTime;
    }
}
Run Code Online (Sandbox Code Playgroud)

这是基类:

abstract class BaseClass extends SomeOtherBaseClass
{
    use Cacheable;
    ...
}
Run Code Online (Sandbox Code Playgroud)

这是我的2个最后课程:

class Class1 extends BaseClass
{
    ...
}

class Class2 extends BaseClass
{
    protected static $isCacheEnabled = true;
    protected static $cacheExpirationTime = 3600;
    ...
}
Run Code Online (Sandbox Code Playgroud)

以下是执行这些类的代码部分:

function baseClassRunner($baseClassName)
{
    ...
    $output = null;
    if ($baseClassName::isCacheEnabled()) { …
Run Code Online (Sandbox Code Playgroud)

php inheritance properties traits redefinition

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

我怎样才能重新定义一个子程序并保留旧程序呢?

这就是我想要实现的目标:

sub first {
    print "this is original first";
}

*original_first = \&first;

sub first {
    print "this is first redefined";
}

original_first(); # i expect this to print "this is original first"
first() # i expect this to print "this is first redefined"
Run Code Online (Sandbox Code Playgroud)

我认为通过保存符号first,我可以稍后调用原始子程序(在名称下original_first)并且也能够调用first,并重新定义一个.但是,如果我打电话给original_first,我仍然得到"这是第一次重新定义".我需要做些什么来完成这项工作?

perl symbols redefinition

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

在 C++ 中重新定义 template&lt;class T&gt;

我已经搜索并搜索了我的问题的解决方案,但我似乎找不到。我正在使用 Code::Blocks 并且我收到模板类的重新定义错误。

这是我的“vectorAux.h”文件:

#ifndef vectoraux_h
#define vectoraux_h

#include <vector>
#include <algorithm>
#include <iostream>

template <typename T>
void removeDup(std::vector<T> & v);

template <typename T>
unsigned seqVectSearch(const std::vector<T> & v, unsigned first,
               unsigned last, const T& target);

template <typename T>
void writeVector(const std::vector<T> & v);

#include "vectorAux.cpp"
#endif
Run Code Online (Sandbox Code Playgroud)

这是我的“vectorAux.cpp”文件:

#include "vectorAux.h"

#include <vector>
#include <algorithm>
#include <iostream>

template <typename T>
void removeDup(std::vector<T> & v)
{
    std::vector<int> vector1;
    unsigned i, last = v.size();

    for(int j = 0; j <= v.size(); j++)
    { …
Run Code Online (Sandbox Code Playgroud)

c++ templates header redefinition

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

Objective-C和objective-C++中静态成员的定义

编译objective-c源代码和objective-c ++源代码时,我有所不同.

这里是test.h中Class1和Class2的声明:

#import <Foundation/Foundation.h>

@interface Class1 {
}
@end

@interface Class2 {
}
@end
Run Code Online (Sandbox Code Playgroud)

现在,这是test.m中的Objective-C实现:

#import "test.h"

@implementation Class1
/* static member */
static int mystatic;
@end


@implementation Class2
/* static member */
static int mystatic;
@end
Run Code Online (Sandbox Code Playgroud)

我用这个命令成功编译:

gcc -arch armv6 -isysroot /Developer/.../iPhoneOS5.0.sdk -x objective-c -c test.m
Run Code Online (Sandbox Code Playgroud)

现在我完全使用这个Objective-C++实现test.mm(完全相同的源代码):

#import "test.h"

@implementation Class1
/* static member */
static int mystatic;
@end


@implementation Class2
/* static member */
static int mystatic;
@end
Run Code Online (Sandbox Code Playgroud)

并使用此命令行进行编译(-x选项中的差异):

gcc -arch armv6 -isysroot /Developer/.../iPhoneOS5.0.sdk -x objective-c++ -c …
Run Code Online (Sandbox Code Playgroud)

static compilation objective-c objective-c++ redefinition

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

C++错误消息重新定义函数

我使用两个堆栈来实现队列类.我的头文件看起来像:

#ifndef _MyQueue_h
#define _MyQueue_h
using namespace std;

template <typename T>
class MyQueue {

public:
    MyQueue();
    ~MyQueue();
    void enqueue(T element);
    T peek();
    void dequeue();
    int size();
    bool empty();

private:
    int count;
    stack<T> stk1;
    stack<T> stk2;
};
# include "MyQueue.cpp"
# endif
Run Code Online (Sandbox Code Playgroud)

我的cpp(实现)文件如下所示:

#include <stack>
#include "MyQueue.h"
using namespace std;

template <typename T>
MyQueue<T>::MyQueue()
{
    count = 0;
}

template <typename T>
MyQueue<T>::~ MyQueue()
{
}

template <typename T>
void MyQueue<T>::enqueue(T element)
{
    stk1.push(element);
    count ++;
}
Run Code Online (Sandbox Code Playgroud)

(省略其他功能).

但是,使用Xcode 4.5,它一直在说我的函数(MyQueue,~MyQueue,enqueue,peek等)被重新定义.任何人都可以帮我澄清我在哪里重新定义它们?

谢谢

c++ queue stack class redefinition

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

为什么这个编译成功?

这段代码编译的原因是什么:

#include <iostream>
using namespace std;
class being {
public:
  void running(char c) {
        cout << "No one know ";
    }
};
class human :public being {
public:
    using being::running;
    void running(char y) {
        cout << "I am a human";
    }
};

int main() {
    human o;
    o.running('A');
    return 0;
}


the output : "I am a human" 
Run Code Online (Sandbox Code Playgroud)

我的意思是(我期待有错误(人类类中的重定义函数))像这样:这段代码编译:

#include <iostream>
using namespace std;
class being {
public:
    int v;
};
struct human :public being {
public:
    
    double v;

}; …
Run Code Online (Sandbox Code Playgroud)

c++ derived-class using-declaration redefinition language-lawyer

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