标签: non-static

未使用的模板方法出错

struct B
{
    int a;
    void foo() {a = 5;}
};

template <typename T>
struct A
{
    A(int i) { B::foo(); }
    A(double d) {}
};

int main()
{
    A<int> a(5.0);
}
Run Code Online (Sandbox Code Playgroud)

gcc 4.7.2编译它没有错误.clang 3.4svn抱怨:

$ clang -Wall -Wextra test.cpp 
test.cpp:10:16: error: call to non-static member function without an object argument
        A(int i) { B::foo(); }
                   ~~~^~~
Run Code Online (Sandbox Code Playgroud)

当然代码是错误的,但哪个编译器符合标准?

同样奇怪的是,如果使用5而不是5.0,则clang不会像gcc那样打印任何"实例化"注释:

$ gcc test.cpp 
test.cpp: In instantiation of ‘A<T>::A(int) [with T = int]’:
test.cpp:15:12:   required from here
test.cpp:9:13: error: cannot call member …
Run Code Online (Sandbox Code Playgroud)

c++ gcc templates clang non-static

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

c ++中带多态的静态方法

我有一个使用多态的奇怪问题.我有一个实现静态方法的基类.由于各种原因,此方法必须是静态的.基类还有一个纯虚方法run(),由所有扩展类实现.我需要能够run()从静态类调用.

当然,问题是静态类没有this指针.此方法可以在void*参数中传递.我一直试图想出一种聪明的方法将run方法传递给它,但到目前为止还没有任何工作.我也试过把它传递给它.这个问题是我必须实例化它,这需要知道扩展类.这破坏了多态性的整个目的.

关于如何解决这个问题的任何想法?

c++ polymorphism static-methods non-static

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

Java初学者问题:下面的代码有什么问题?

public class Function
{
   public static void main(String args[])
   {
      System.out.println(power(3,2));
      System.out.println(power(3,2));
      System.out.println(power(2));
   }
   public long power(int m)
   {
      return m*m;
   }
   public long power(int m,int n)
   {
      long product=1;
      for(int i=1;i<=n;i++)
      {
          product=product*m;
      }
      return product;
   }
}
Run Code Online (Sandbox Code Playgroud)

编译器显示此错误: -

Function.java:5:无法从静态上下文引用非静态方法power(int,int)

[编辑]

对于缩进的事情很抱歉:/从现在开始我会记住这一点.

好的,我刚刚添加了静态关键字,现在工作正常.这个静态关键字有什么区别?我是java的初学者,还没有研究静态做什么.我肯定会在本书的后续章节中阅读它,但有人请告诉我它的作用.谢谢.

java non-static

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

C++:静态成员变量

声明:"静态成员变量只能由静态方法更改."

这个语句是否正确,或者静态成员变量是否也可以通过非静态方法更改?

谢谢!

c++ variables static member non-static

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

如何从静态方法调用非静态方法

可能重复:
在Java中调用静态方法中的非静态方法

是否可以从静态方法调用非静态方法?非静态位于另一个类中,它必须是非静态的.

    public static void start() {
        CheckConnection checkInternet = new CheckConnection();
        if (checkInternet.isNetworkAvailable()) {
            // Has internet Connection
            } else {
            // No Internet Connection
        }
 }
Run Code Online (Sandbox Code Playgroud)

代码在Eclipse(Android 4.0.4)中没有给出任何错误,但如果我运行它,我的应用程序会冻结并关闭.

java static android non-static android-4.0-ice-cream-sandwich

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

Powermock验证非静态方法中的私有静态方法调用

亲爱的stackoverflow同志,我再次遇到一个问题,让特定的PowerMock/Mockito案例工作.问题是,我需要验证私有静态方法的调用,该方法是从公共非静态方法调用的.我之前发布的一个类似的例子如何抑制和验证私有静态方法调用?

这是我的代码:

class Factory {

        public String factorObject() throws Exception {
            String s = "Hello Mary Lou";
            checkString(s);
            return s;
        }

        private static void checkString(String s) throws Exception {
            throw new Exception();
        }
    }
Run Code Online (Sandbox Code Playgroud)

这是我的测试类:

@RunWith(PowerMockRunner.class)
@PrepareForTest(Factory.class)
public class Tests extends TestCase {

    public void testFactory() throws Exception {

        Factory factory = mock(Factory.class);
        suppress(method(Factory.class, "checkString", String.class));
        String s = factory.factorObject();
        verifyPrivate(factory, times(8000)).invoke("checkString", anyString());
    }
}
Run Code Online (Sandbox Code Playgroud)

这里的问题是,测试是成功的,但它不应该.它不应该是因为私有静态方法应该被正确调用1次.但无论我在时间()中放置什么价值,它总是验证它是真的...... halp :(

java non-static mockito powermock

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

Android Studio静态或非静态变量和方法

关于变量或方法何时应该是静态的,我有点困惑.我开发了一个包含多个类,变量和方法的应用程序,很少使用关键字static.但它的工作令人满意.你能告诉我,我是否犯了错误,为什么?以下是我的代码示例:

public class GameActivity extends AppCompatActivity {

public String[] mots = {"AFTERNOON", "AIRPORT","AVENUE","BETWEEN", "BUS", "CAB", "COAST","DAY",
        "DIFFERENCE","DOLLARS","ENGLISH","FRENCH","GOOD","GOODBYE","HOUR","IMPROVE","LATER",
        "LOCAL","MARGARET","NAME","NINE","NUMBER","ONLY","PHONE","PLANE","SAME","SHARE",
        "SIDEWALK","STATES","SUNDAY","THERE","TIME","TWELVE","UNITED","UNIVERSITY","VERY",
        "WEST","WHEN","WOMAN","YOUNG"};

public String[] alphabet = {"A","B","C","D","E","F","G","H","I","J","K","L","M",
        "N","O","P","Q","R","S","T","U","V","W","X","Y","Z"};

public String mysteryWord = "vide";
//public int nombreDeLettres;

public int numeroImage = 1;
public boolean jeuFini = false;
public int lettresDevinees = 0;
public int wins = 0;
public int losses = 0;

public int numberOfMots;
int numeroAuHasard;
public Boolean maLettreAServi = false;
public ArrayList<CharSequence> lettresEssayees = new ArrayList<>();

public Button monBouton;
public TextView …
Run Code Online (Sandbox Code Playgroud)

static android non-static

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

c ++将数据源函数作为参数传递

我有一个静态功能:

void E::createEP(std::list<double>* ret, double length, double (*getHeight)(double)) {
  // magic
  double sampleIntervall = //from magic

  double dist = 0;
  while (length - dist > -0.1) {
    ret->push_back(dist, (*getHeight)(dist));
    dist += sampleIntervall;
  }
}
Run Code Online (Sandbox Code Playgroud)

在不同的调用中,我有两个不同的函数作为getHeight()传递:

  • 数据库包装类中的一个非静态函数
  • 型的相同的对象内的函数EcreateEP()(对于"再创造"具有不同参数),其需要访问元素的字段,因此可以不是静态的,无论是.

以某种方式可以将非静态函数作为参数传递给静态函数吗?

如果没有,那么最优雅的替代方案是什么?我不想复制整个代码createEP().

c++ static function non-static c++11

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

非静态模板成员:可能吗?

是否可以在类中创建非静态模板字段?
如果没有,如何解决?

应根据需要在编译时创建此类字段.

我有很多的B-class一样B1,B2,B3.
(在实际情况中,他们有更有意义的名字.)

我想创建一个类D非静态模板函数add<BX>()是必须counter++每次我称呼它,每一个人的时间BX,对于D的特定情况下
(在现实情况下,它确实有些事情更复杂.)

这是一个实现它的工作演示.
可悲的是,我现在有硬编码每一个BX,一个接一个(B1,B2,B3内部)D: -

class B1{};class B2{};class B3{};
class Counter{
    public: int counter=0;
};
template<class BX>class Tag{};
class D{
    Counter countB1;
    Counter countB2;
    Counter countB3;
    public: template<class BX> void add(){  
        add_(Tag<BX>());
    }
    private:
    void add_(Tag<B1>){ countB1.counter++;}
    void add_(Tag<B2>){ countB2.counter++;}
    void add_(Tag<B3>){ countB3.counter++;}
    public: …
Run Code Online (Sandbox Code Playgroud)

c++ templates non-static c++14 template-variables

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

println的非静态替代品

简单的问题是我可以使用其他函数而不是println,因为我想将非静态变量输出到文件usig out.println();

这是我的代码:

import java.io.*;

public class main {

String outputString ="Math.sqrt(25);" ;
static String outputPath ="src/output.txt";
/**
 * @param args
 */
public static void main(String[] args) throws IOException {
    File f;
    f= new File (outputPath);
        //file creation
        if(!f.exists()){
            f.createNewFile();
            System.out.println("File has been created");
        }else{
            f.delete();
            System.out.println("1. File has been deleted");
            f.createNewFile();
            System.out.println("2. File has been created");
        }
        //adding string(text) to file
        try{
            FileWriter outFile = new FileWriter(args[0]);
            PrintWriter out = new PrintWriter(outFile);

            out.println(outputString);
            out.close();

        }catch(IOException e){
                 e.printStackTrace();
            }
    } …
Run Code Online (Sandbox Code Playgroud)

java static non-static

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