标签: static-functions

静态成员函数错误; 如何正确写签名?

尝试使用当前签名在g ++中编译我的代码时出错:

cannot declare member function static void Foo::Bar(std::ostream&, const Foo::Node*) to have static linkage
Run Code Online (Sandbox Code Playgroud)

我的问题是双重的:

  1. 为什么不这样编译?
  2. 什么是正确的签名,为什么?

在使用C++时,签名一直是我的死

编辑:这是类头文件,以及:

class Foo {


public:
    Foo();

    ~Foo();

    bool insert(const Foo2 &v);

    Foo * find(const Foo2 &v);

    const Foo * find(const Foo2 &v) const;

    void output(ostream &s) const;

private:
    //Foo(const Foo &v);
    //Foo& operator =(const Foo &v);
    //Not implemented; unneeded


    struct Node {
        Foo2 info;
        Node *left;
        Node *right;
    };

    Node * root;

    static bool insert(const Foo2 &v, Node *&p);


    static void …
Run Code Online (Sandbox Code Playgroud)

c++ static-members method-signature static-functions

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

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

你会在哪里使用友元函数而不是静态成员函数?

当我们希望它访问该类的私有成员时,我们将非成员函数作为类的朋友.这赋予它与静态成员函数相同的访问权限.两种选择都会为您提供一个与该类的任何实例无关的函数.

什么时候必须使用朋友功能?什么时候必须使用静态函数?如果两者都是解决问题的可行方案,那么我们如何权衡它们的适用性呢?是否有一个默认情况下应该首选?

例如,当实现一个工厂创建foo只有私有构造函数的类的实例时,工厂函数应该是foo(你会调用foo::create())的静态成员还是应该是友元函数(你会调用create_foo())?

c++ friend-function static-functions

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

静态函数是否需要C中原型的static关键字?

我的C编程书说当我想创建一个静态函数时,我需要将static关键字放在函数定义的前面.它没有明确提及原型.此外,这些示例不使用原型,只是将静态函数放在文件的顶部(这样它们就不需要我假设的原型).

那么,静态函数是否需要原型的static关键字?或者我把它放在定义的前面?

c static-functions

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

静态函数帮助C++

我无法解决这个问题.这是一个简单的例子:

class x
{
    public:
    void function(void);

    private:
    static void function2(void);
};

void x::function(void)
{
    x::function2(void);
}

static void function2(void)
{
     //something
}
Run Code Online (Sandbox Code Playgroud)

我得到错误,其中抱怨function2是私有的.如果我把它公开(我真的不想这样做),我会得到关于对function2的未定义引用的错误.我究竟做错了什么?谢谢!

c++ static-functions

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

如何在MATLAB类中获取静态成员变量?

有没有办法在MATLAB类中定义静态成员变量?

这不起作用:

classdef A

    properties ( Static )
        m = 0;
    end
end
Run Code Online (Sandbox Code Playgroud)

它建议使用关键字"常量"而不是"静态",不能修改常量属性.我想要一个对所有类对象通用的变量A,我希望能够在类的方法中修改该变量A.

所以我需要的是一个私有静态成员变量.有没有办法在MATLAB中获得它?


发现可以使用静态成员函数中的持久变量来完成变通方法.

在这种情况下,您应该从基类继承所有类,如下所示.

classdef object < handle

    properties ( GetAccess = 'public', SetAccess = 'private' )
        id
    end

    methods ( Access = 'protected' )
        function obj = object()
            obj.id = object.increment();
        end
    end

    methods ( Static, Access = 'private' )
        function result = increment()
            persistent stamp;
            if isempty( stamp )
                stamp = 0;
            end
            stamp = stamp + uint32(1); …
Run Code Online (Sandbox Code Playgroud)

oop matlab class static-functions matlab-class

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

PHP构造函数和静态函数

关于构造函数在PHP中如何工作,我有点困惑.

我有一个带有构造函数的类,当我实例化一个新对象时会调用它.

$foo = new Foo($args);
Run Code Online (Sandbox Code Playgroud)

__construct($params)在类中调用Foo它并执行适当的初始化代码.

但是,当我使用该类调用静态函数时,将再次调用构造函数.

$bar = Foo::some_function(); //runs the constructor from Foo
Run Code Online (Sandbox Code Playgroud)

这会导致构造函数执行,运行我打算仅在创建新Foo对象时使用的对象初始化代码.

我是否忽略了构造函数的工作原理?或者有什么方法可以防止__construct()在我使用类进行静态函数调用时执行?

我应该使用"工厂"功能来进行对象初始化吗?如果是这样,构造函数的重点是什么呢?

::编辑::我有一个表单,用户可以将照片上传到相册(create_photo.php)和他们可以查看相册的区域(view_photos.php).提交表格时:

$photo = new Photo($_FILES['photo'], $_POST['arg1'], ect..);
Run Code Online (Sandbox Code Playgroud)

Photo构造函数创建并保存照片.但是在view_photo.php中,当我打电话时:

$photo = Photo::find_by_id($_POST['id']) //user-defined function to query database
Run Code Online (Sandbox Code Playgroud)

这导致Photo的构造函数运行!

php constructor static-functions

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

是否可以在Kotlin界面中指定静态函数?

我想做这样的事情:

interface Serializable<FromType, ToType> {
    fun serialize(): ToType
    companion object {
        abstract fun deserialize(serialized: ToType): FromType
    }
}
Run Code Online (Sandbox Code Playgroud)

甚至这对我有用:

interface Serializable<ToType> {
    fun serialize(): ToType
    constructor(serialized: ToType)
}
Run Code Online (Sandbox Code Playgroud)

但都没有编译.是否有这样的语法,或者我将被迫使用make this作为工厂的接口? 或者还有另一个答案吗?那很整洁!

static-methods interface abstract static-functions kotlin

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

Linux设备驱动程序中的静态函数

为什么大多数设备驱动程序中的每个功能都是静态的?由于静态函数在文件范围之外不可见.那么,这些驱动程序函数如何被用户空间应用程序调用?

c static linux-device-driver linux-kernel static-functions

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

c ++中的静态虚函数

我有一个基类和派生的基本类,我想更改基本函数,同时保持它们是静态的,因为它们应该作为静态传递给其他函数.

我怎样才能做到这一点?

c++ inheritance c++builder virtual-inheritance static-functions

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