我写了这个测试代码:
class MyProgram
{
int count = 0;
public static void main(String[] args)
{
System.out.println(count);
}
}
Run Code Online (Sandbox Code Playgroud)
但它给出了以下错误:
Main.java:6: error: non-static variable count cannot be referenced from a static context
System.out.println(count);
^
Run Code Online (Sandbox Code Playgroud)
如何让我的方法识别我的类变量?
当我尝试在静态类中调用非静态方法时,我收到错误.
无法从类型回放中对非静态方法methodName()进行静态引用
我不能使方法静态,因为这也给我一个错误.
此静态方法无法从xInterface隐藏实例方法
有没有办法在另一个静态方法中调用非静态方法?(这两种方法分别是单独的包和单独的类).
我只是在阅读教科书中给我的文字,我不确定我是否理解它的含义.它基本上告诉我静态方法或类方法包含"modifier"关键字static.但我真的不知道这意味着什么?
有人可以用非常简单的术语向我解释静态或类方法是什么?
另外,我可以获得一个关于Instance方法的简单解释吗?
这是他们在教科书中给我的:
静态改性剂的存在与否存在重要的实际意义.只要Java处理它所属的类的定义,就可以调用并执行公共类方法.实例方法不是这种情况.在可以调用和执行公共实例方法之前,必须创建它所属的类的实例.要使用公共类方法,您只需要该类.另一方面,在使用公共实例方法之前,必须具有该类的实例.
在另一个方法的定义中调用静态方法的方式根据两个方法是否属于同一个类而不同.在上面的示例中,factorial和main都是MainClass类的方法.因此,在main的定义中调用factorial只是引用方法名称"factorial".
我有两个类,一个用于定义算法参数,另一个用于实现算法:
1级(算法参数):
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace VM_Placement
{
public static class AlgorithmParameters
{
public static int pop_size = 100;
public static double crossover_rate = 0.7;
public static double mutation_rate = 0.001;
public static int chromo_length = 300;
public static int gene_length = 4;
public static int max_allowable_generations = 400;
static Random rand = new Random();
public static double random_num = rand.NextDouble();
}
}
Run Code Online (Sandbox Code Playgroud)
2级(实现算法):
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace VM_Placement
{ …Run Code Online (Sandbox Code Playgroud) 我有两个班级A和ClassB:
static class ClassA
{
static string SomeMethod()
{
return "I am a Static Method";
}
}
class ClassB
{
static string SomeMethod()
{
return "I am a Static Method";
}
}
Run Code Online (Sandbox Code Playgroud)
我想知道ClassA.SomeMethod();和之间有什么区别ClassB.SomeMethod();
如果可以在不创建类实例的情况下访问它们,为什么我们需要创建静态类而不是仅使用非静态类并将方法声明为静态?
我想打印两个不同的东西,这取决于一个函数是静态调用Foo::print()还是来自一个实例Foo foo; foo.print();
编辑:这是一个绝对不起作用的类定义,已经有几个人回答了.
class Foo {
string bla;
Foo() { bla = "nonstatic"; }
void print() { cout << bla << endl; }
static void print() { cout << "static" << endl; }
};
Run Code Online (Sandbox Code Playgroud)
但是,有没有一种很好的方法来实现这种效果?基本上,我想做:
if(this is a static call)
do one thing
else
do another thing
Run Code Online (Sandbox Code Playgroud)
换句话说,我知道PHP可以检查是否*this定义了变量,以确定是否静态调用该函数.C++是否具有相同的功能?
我最近对PHP 5.4进行了更新,我收到有关静态和非静态代码的错误.
这是错误:
PHP Strict Standards: Non-static method VTimer::get()
should not be called statically in /home/jaco/public_html/include/function_smarty.php on line 371
Run Code Online (Sandbox Code Playgroud)
这是第371行:
$timer = VTimer::get($options['magic']);
Run Code Online (Sandbox Code Playgroud)
我希望有人可以提供帮助.
编译器不允许静态方法调用非静态方法.我理解这样做是因为非静态方法通常最终使用实例变量.
但是有一个不使用实例变量的非静态方法是否有意义.如果我们的行为不影响或不受实例状态的影响,则不应将此类方法标记为静态.
我正在创建一个双链表,并重载了operator =使列表上的另一个相等:
template<class T>
void operator=(const list<T>& lst)
{
clear();
copy(lst);
return;
}
Run Code Online (Sandbox Code Playgroud)
但是当我尝试编译时出现此错误:
container_def.h(74) : error C2801: 'operator =' must be a non-static member
Run Code Online (Sandbox Code Playgroud)
此外,如果有帮助,第74行是定义的最后一行,带有"}".
我有这样的事情:
class Bar
{
public:
pair<string,string> one;
std::vector<string> cars;
Bar(string one, string two, string car);
};
class Car
{
public:
string rz;
Bar* owner;
Car(string car, Bar* p);
};
class Foo
{
public:
Foo ( void );
~Foo ( void );
int Count ( const string & one, const string & two) const;
int comparator (const Bar & first, const Bar & second) const;
std::vector<Bar> bars;
};
int Foo::comparator(const Bar & first, const Bar & second) const{
return first.name < …Run Code Online (Sandbox Code Playgroud)