标签: this

C++使用"this"指针作为普通指针

我目前正在尝试使用"this"指针传递指向函数的指针:

void GameObject::process_events()
{
    std::vector<ObjectEvent*>::iterator it;
    for (it = events.begin(); it != events.end(); it++)
        (*it)->process(this);
}

Class ObjectEvent
{
private:
    bool* trigger;
    void (*response)(GameObject*);
public:
    process(GameObject* obj)
    {
        if (*trigger)
            response(obj);
    }
};
Run Code Online (Sandbox Code Playgroud)

但是我收到一个错误:

No matching function call to 'ObjectEvent::process(GameObject* const)'
Run Code Online (Sandbox Code Playgroud)

可能是什么问题呢?

c++ pointers this

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

javascript - 当方法绑定到事件侦听器时,"this"未定义

我已经尝试通过阅读它来了解this关键字所指的内容.好吧,那没有帮助.所以请帮我这个!
手动函数调用与事件监听器绑定的区别在哪里?

var app = {
    foo: true,
    bar: function() {
        console.log("this",this.foo);
        console.log("app",app.foo);
    }
}

app.bar();
/*  this true
    app true    */

document.addEventListener("click", app.bar);
/*  this undefined
    app true    */
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助

javascript this event-listener addeventlistener

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

使用jquery在`this`中的特定元素

所以在jquery中,如果我想在.test单击中定位类中的div,我使用以下代码:

$('.test div').click(function(){
    //do something
});
Run Code Online (Sandbox Code Playgroud)

但如果"做某事"部分需要一个this参数,我似乎无法获得相同的效果.所以我想说我希望在任何div中制作所有粗体文本,并且test淡出.我必须做这样的事情:

$('.test div').click(function(){
    $(this ' b').animate({
        opacity:toggle
    },500);
});
Run Code Online (Sandbox Code Playgroud)

但那是无效的代码.那么我如何定位thisJquery选择器中的特定元素?

javascript jquery this

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

为什么typeof(this)或sizeof(this)不是有效的?

简单的问题.为什么表达式typeof(this)无效C#?还是表达sizeof(this)呢?当我尝试运行一个简短的测试程序时,它会显示Type Expected,然后抛出一堆其他语法错误.我的意思是,typeof是一个方法(或者你传递参数的关键字,不确定),并且它是相同的sizeof,那么为什么它不是this一个有效的参数?我的意思是,你可以用this(例如MyMethod(this))调用很多方法,那么制作typeofsizeof特殊的是什么?

在为像a这样​​的东西编写代码片段时,这非常有用DependencyProperty.例如,查看propa代码段.它必须typeof(ownerclass)在那里使用.如果可以的话会好得多typeof(this).


测试程序:

using System;
public struct TestingClass
{
    public static void Main()
    {
        TestingClass tc = new TestingClass();
        tc.Test();
        Console.ReadKey(true);
    }
    public void Test()
    {
        Console.WriteLine(typeof(this)); //error here
        Console.WriteLine(sizeof(this)); //and here too
    }
}
Run Code Online (Sandbox Code Playgroud)

c# this

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

C++中的对象内存布局以及它的结构如何依赖于大多数平台

我在C++中有两个类:

class Base
{
  int baseField;
 public:
  Base();
  ~Base();
  T BaseMethod();
  virtual SomeMethod()=0;
};

class Derived : public Base
{
  int derivedField;
 public:
  Derived()
  ~Derived();
  T DerivedMethod();
  virtual SomeMethod() {...}; // Some implementation
};
Run Code Online (Sandbox Code Playgroud)

我的问题是它是如何在内存中表示的,即这个类的指针,vptr(vtable)字段方法指针在哪里.好的,它依赖于编译器,但有一些不成文的标准.我对Visual Studio和gcc编译器最感兴趣.

[编辑:我用一个虚拟方法来改进示例,之前没有任何虚拟]

有没有一些关于这个主题的书籍

c++ oop this vtable

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

Java Thread参数

在我学习线程的过程中,这是按预期工作的

public class Game implements Runnable{

    //FIELDS
    private Thread t1;
    boolean running;

    //METHODS   

    public void start(){
        running = true;
        t1 = new Thread(this);
        t1.start();
    }


    public void run(){
        while (running){
            System.out.println("runnin");
            try {
                Thread.sleep(17);
            }
            catch (InterruptedException e) {
                        e.printStackTrace();
            }
        }
    }



}
Run Code Online (Sandbox Code Playgroud)

然后,当我将线程参数更改为

t1=new Thread (new Game());
Run Code Online (Sandbox Code Playgroud)

程序不再进入run方法.它们不应该是一样的吗?替换"this"关键字的另一种方法应该是什么?

编辑:我从另一个类调用start方法.

甚至在创建实例后将运行变量设置为true,它仍然为false:

public void start(){
    t1 = new Thread(new Game());
    running = true;
    t1.start();
}
Run Code Online (Sandbox Code Playgroud)

java multithreading this

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

在下面的程序中,这个(1)和这个(2)的目的是什么?

在下面的程序中我使用了这个(1)和这个(2)使用这个(1)和这个(2)的目的是什么,我也想知道这是一个关键字或方法?我是新手java编程语言.

class Const
{
    Const()
    {
        this(1);
        System.out.println(1);

    }
    Const(int x)
    {
        System.out.println(2);
    }
}
class const1 extends Const
{
    int a;
    const1()
    {
        this(8);
        System.out.println(3);

    }
        const1(int x)
    {

        System.out.println(4);

    }
    public static void main(String s[])
    {
        new const1();
    }
}
Run Code Online (Sandbox Code Playgroud)

java methods this

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

使用this-keyword编译程序

我正在尝试使用makefile编译其他人编写的程序,在使用它之前我没有时间学习程序中的所有内容 - 因此我对一些错误感到困惑.

第一个错误是

(...): In function `_ZN30RealTriDiagonalSymmetricMatrix14ResizeAndCleanEii':
/home/jorgen/diaghamsvn/DiagHam/src/Matrix/RealTriDiagonalSymmetricMatrix.cc:350: 
undefined reference to `GarbageFlag::Used()'
Run Code Online (Sandbox Code Playgroud)

RealTriDiagonalSymmetricMatrix.cc中的违规行是:

if (this->Flag.Used() == true)
Run Code Online (Sandbox Code Playgroud)

我查找GarbageFlag.h文件,它包含函数Used() ; 这是它的一部分:

class GarbageFlag
{

 private:

#ifdef __SMP__
pthread_mutex_t *FlagMutex;
#endif


public:

// default constructor
GarbageFlag();

// copy constructor
// flag = garbage flag to copy
GarbageFlag(const GarbageFlag& flag);

// destructor
~GarbageFlag();

// return value = reference on current garbage flag
GarbageFlag& operator = (const GarbageFlag& flag);

bool Used ();
Run Code Online (Sandbox Code Playgroud)

此外,RealTriDiagonalSymmetricMatrix.cc文件包含一个标题,该标题又包含GarbageFlag.h.所以我很困惑为什么它找不到这个功能.

此后有很多类似的错误.任何人都知道发生了什么事?

c++ compilation this header-files

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

在抽象类中,"this"关键字是否重新构造父类或子类?

我有一个抽象类飞行.Flight包含调用私有方法调度的方法schedule()(最终Flight f)

public void schedule()
{
    schedule(this);
}

private void schedule(final Flight f)
{
    new Timer().schedule(new TimerTask()
    {
        @Override
        public void run()
        {
            f.checkIn();
            updateList();
        }
    }, this.getDate());
}
Run Code Online (Sandbox Code Playgroud)

现在让我说我有一个扩展Flight的类SouthWestFlight

Flight f = new SouthWestFlight(); //ignore the missing params doesn't matter for example
f.schedule();
Run Code Online (Sandbox Code Playgroud)

这会将Flight的实例或SouthWestFlight的实例作为schedule方法中的参数传递吗?

java this abstract

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

从类内部修改类实例

假设我有一个可序列化的类,比如

[Serializable]
    public class DatabaseViewModel:MVVM.ObservableObject 
    {
        //fields
        //properties

        public DatabaseViewModel()
        {
           //if a serialization file exists then deseralize and make this instance equal to it
           //else initialize fields
        }
    }
Run Code Online (Sandbox Code Playgroud)

是否可以从类内部而不是调用范围中执行此类操作?

在调用范围我会做

var dbvm = new DatabaseViewModel();
Run Code Online (Sandbox Code Playgroud)

然后我希望构造函数决定它是应该创建一个新对象还是加载一个序列化对象.

在我班上我试过这个

this = //my serialized object 
Run Code Online (Sandbox Code Playgroud)

如果我想从调用范围中做到这一点,我会这么做

DatabaseViewModel dbvm = null;
if(File.Exists(".../DatabaseViewModel.bin")
dbvm = //deserialize .../DatabaseViewModel.bin
else
dbvm = new DatabaseViewModel();
Run Code Online (Sandbox Code Playgroud)

c# constructor class this

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