标签: static-variables

我怎么能从另一个文件访问静态变量?

我怎么能从另一个文件访问静态变量?静态变量不具有文件范围吗?

bash-3.2$ ls
a.c  b.c

bash-3.2$ cat a.c
#include <stdio.h>
static int s = 100;
int fn()
{
/*  some code */
}

bash-3.2$ cat b.c
#include <stdio.h>
#include "a.c"
extern int s;
int main()
{
printf("s = %d \n",s);
return 0;
}

bash-3.2$ gcc b.c   

bash-3.2$ a.exe
s = 100 
Run Code Online (Sandbox Code Playgroud)

c static-variables

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

静态变量和函数用法

我有以下类定义和main().有人可以指出我为什么会收到错误吗?

#include <iostream>
#include <list>
using namespace std;

class test
{
protected:
  static list<int> a;
public:
  test()
  {
    a.push_back(150);
  }
  static void send(int c)
  {
    if (c==1)
      cout<<a.front()<<endl;
  }
};

int main()
{
  test c;
  test::send(1);
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

我得到的错误如下:

/tmp/ccre4um4.o: In function `test::test()':
test_static.cpp:(.text._ZN4testC1Ev[test::test()]+0x1b): undefined reference to `test::a'
/tmp/ccre4um4.o: In function `test::send(int)':
test_static.cpp:(.text._ZN4test4sendEi[test::send(int)]+0x12): undefined reference to `test::a'
collect2: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)

即使我使用c.send(1)而不是test :: send(1),错误也是一样的.在此先感谢您的帮助.

c++ static-variables static-functions

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

使用现有的静态变量识别第一次调用?

有没有办法通过识别GCC用来促进静态变量(我的函数中已存在的变量)的内部(隐藏?)变量来识别函数是否第一次被调用?

我希望从C++代码中获取这些变量.

c++ gcc static-variables

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

Python静态变量分辨率

我正在尝试创建为特定类创建的所有实例的计数器.很明显,我的代码不会self.__class__.counter超过1.我做错了什么?

 class Feature(object):
    counter = 0
    def __init__(self, line):
        self.id = self.__class__.counter
        self.__class__.counter = self.__class__.counter + 1
    def __repr__(self):
        return "Feature: id=%d name=%s" % (self.id,self.name,)
Run Code Online (Sandbox Code Playgroud)

更新: 此代码实际上按预期工作.聪明的人留下了一些非常详细的解释,说明如何在python中处理静态.我投票决定关闭我的问题,但讨厌答案是否会消失.

python static static-variables

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

使用 C++ 的静态类

首先让我说,我知道“静态类”不是在 C++ 中使用的东西,但我有一种情况,我相信类所持有的所有信息都应该是静态的。我试图了解是否有更好的方法来解决我的问题。

示例:我正在构建一个类来维护有关我的游戏的 的信息window,因此我可以从对象的任何实例访问当前windowwidthheight。这个类将在我调整大小、最小化、最大化等时被编辑。我的视频游戏永远不会有两个单独的窗口,只有单独的实例,它们都应该包含相同的数据。这是我所拥有的:


窗口.h

class Window {
    static int width;
    static int height;
public:
    Window();
    Window(int width, int height);
    static int getWindowWidth();
    static int getWindowHeight(); 
}
Run Code Online (Sandbox Code Playgroud)

窗口.cpp

#include "Window.h"

int Window::width = 0;    
int Window::height = 0;

Window::Window( ) { }

Window::Window(int window_width, int window_height) {

    width = window_width;        
    height = window_height;

    SDL_CreateWindow( "Window",
                       SDL_WINDOWPOS_UNDEFINED,
                       SDL_WINDOWPOS_UNDEFINED,
                       width,
                       height,
                       SDL_WINDOW_OPENGL | SDL_WINDOW_RESIZABLE | SDL_WINDOW_SHOWN
                    );
}

int getWindowWidth() {
    return …
Run Code Online (Sandbox Code Playgroud)

c++ oop static-variables

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

静态var被视为常量?

我有一个包含3个静态变量的struct(someUrl):

struct someUrl {
    static var keywords = String()
    static var someUrlStart = String()
    static var someUrlEnd = String()
}
Run Code Online (Sandbox Code Playgroud)

以及一个类型为someUrl的类(Url):

class Url {
    var someUrlConstructor: someUrl

    init(keywords: String, someUrlEnd: String, someUrlStart: String) {
        self.someUrlConstructor = someUrl(someUrlStart = someUrlStart, keywords = keywords, someUrlEnd = someUrlEnd)
    }

}
Run Code Online (Sandbox Code Playgroud)

在尝试初始化类中的变量时,Xcode抛出一个错误,指出someUrlStart是一个let常量.

无法赋值:'someUrlStart'是'let'常量

到目前为止,这是我在代码中所拥有的全部内容,而且我不明白为什么静态var将被视为常量.这是否特定于初始化器?

static-variables swift

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

为什么定义为静态或非静态时Random变量的行为会有所不同?

我的问题是:为什么变量"_random"的行为在定义为静态/非静态时会发生变化?

==>静态定义时:_random.nextDouble()返回真正的随机值.

==>当不是:_random.nextDouble()返回几乎相同的值.

class Shape   
{  
    protected Canvas _canvas;
    protected UIElement _element;
    static Random _random = new Random();

    public Shape(Canvas canvas)
    {
        _canvas = canvas;
    }

    public void Draw()
    {
        double val1 = _canvas.ActualWidth * _random.NextDouble();
        double val2 = _canvas.ActualHeight * _random.NextDouble();
        _element.SetValue(Canvas.LeftProperty, val1);
        _element.SetValue(Canvas.TopProperty, val2);
        _canvas.Children.Add(_element);
    }

}


public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
    }

    private void MainWindow_Loaded(object sender, RoutedEventArgs e)
    {
        Shape s1 = new Circle(MemoCanvas);

        for (int i = 0; i < …
Run Code Online (Sandbox Code Playgroud)

c# random wpf static-variables

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

C# 中类变量和实例变量的区别

我正在完成基础编程课程,但我无法理解类变量和实例变量(静态和非静态)之间的区别。我需要在代码中确定两者之间的区别

\n\n
Class StudentDetails\n{\nInt rollNumber;\nString studentName;\n}\nStudentDetails firststudent= StudentDetails (19236, \xe2\x80\x9dThomas\xe2\x80\x9d);\n
Run Code Online (Sandbox Code Playgroud)\n\n

我相信 rollNumber、studentName、19236 和“Thomas”都是实例变量,firststudent 是类变量。

\n\n

任何有关这方面的帮助将不胜感激,因为课程材料不是很有帮助。

\n

c# instance-variables static-variables class-variables

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

使用静态变量初始化的静态变量不会更新

如果我有一个静态变量(假设是 foo),其值从另一个静态变量继承,后来我更改了另一个静态变量的值,然后尝试访问 foo ,它仍然给出初始化时使用的旧值。

我有一个包含以下代码的文件endpoints.dart

class EndPoints {

  static String baseUrl = "someurl.com/";

  static String place = baseUrl + "api/v1/place";

}
Run Code Online (Sandbox Code Playgroud)

在这里,如果我更改任何其他文件中的baseUrl并像这样打印它

onPressed () {
 
 print(EndPoints.place);
 //prints someurl.com/api/v1/place

 EndPoint.baseUrl = "changedurl.com/";

 print("${EndPoints.baseUrl}");
 //prints changedurl.com/

 print("${EndPoints.place}");
  //still prints someurl.com/api/v1/place
}
Run Code Online (Sandbox Code Playgroud)

我担心的是为什么static String place = baseUrl + "api/v1/place" 不采用更新后的baseUrl值。

static-variables dart flutter

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

从C#中的函数中总结两个变量是否有任何异常?

我是C#的初学者,也是OOP的初学者.

在C#中总结来自外部函数的两个静态变量时,我感觉很有趣.

这是我的代码.

using System;

namespace StaticFun
{
    class StaticFun
    {
        public static int a;
        public static int b;

        public void count()
        {
            a++;
        }

        public void mount()
        {
            b++;
        }

        public static int getsum()
        {
            return a + b;
        }
    }

    class Program
    {
        static void Main(String[] args)
        {
            StaticFun obj = new StaticFun();

            obj.count();
            obj.count();
            obj.count();
            Console.WriteLine("Value of a for obj : {0}.", StaticFun.a);

            obj.mount();
            obj.mount();
            Console.WriteLine("\na = {0}\nb = {0}\nSum : {0}.", StaticFun.a, StaticFun.b, StaticFun.getsum());

            Console.ReadKey();
        } …
Run Code Online (Sandbox Code Playgroud)

c# static-variables

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

为什么我不能在类声明之外初始化非静态成员?

class ClassObject {
public:
    ClassObject();
    virtual ~ClassObject();
private:
    int x;
 };

int ClassObject::x=10;
Run Code Online (Sandbox Code Playgroud)

为什么编译失败?我认为如果可以通过这种方式初始化静态成员,那么对于非静态成员也应该是可能的.

c++ static-variables

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

解释C中这个"静态变量"的行为

我正在阅读"黑客攻击,剥削艺术"一书,这个代码示例让我很困惑.

它位于全局变量范围的上下文中:

#include <stdio.h>

void function() { // An example function, with its own context
    int var = 5;
    static int static_var = 5; // Static variable initialization
    printf("\t[in function] var = %d\n", var);
    printf("\t[in function] static_var = %d\n", static_var);
    var++; // Add one to var.
    static_var++; // Add one to static_var.
}

int main() { // The main function, with its own context
    int i;
    static int static_var = 1337; // Another static, in a different context
    for(i=0; i …
Run Code Online (Sandbox Code Playgroud)

c debugging static-variables

-4
推荐指数
1
解决办法
481
查看次数