小编Day*_*mer的帖子

要求函数在c ++中内联

对函数有什么要求,以便可以在c ++中内联执行?是否存在函数不能内联的情况?或者任何函数可以是内联的,程序员有责任根据运行时和编译时考虑来决定如何定义函数?

c++ inline

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

MATLAB函数filter中'zf'的内容到底是什么

我知道,为了过滤块中的大量数据,可以使用具有适当过滤系数的函数“filter”,并将最终条件“zf”传递到下一个块作为其初始条件“zi”。

我很困惑。“zf”的具体内容是什么?

它是否保存最后的相关输入样本?(在纯 FIR 滤波器中)最后的相关输出样本?(在 IIR 中)当最后的输入和最后的输出都相关时,它保持什么?

多谢

matlab filtering signal-processing

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

虚函数C++中的默认参数

我读到了C++中的继承机制和虚函数.

根据我的知识(在我遇到的所有例子中),继承的方法与父类具有相同的签名.

我的问题如下:我知道函数默认参数值不是函数签名的一部分.

我可以将此值定义为父类虚函数中的某个常量,并且在派生类中声明并实现没有此默认值的重写方法.

在这种情况下,当我使用指向父类的指针调用派生对象的方法时,是否会使用/不使用此默认初始化来调用函数?

谢谢

c++ inheritance virtual-functions

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

点云的一致法线计算

python 或 c++ 中是否有一个库能够以一致的方式估计点云的法线?以一致的方式,我的意思是法线的方向在表面上全局保留。

例如,当我使用 python open3d 包时:

downpcd.estimate_normals(search_param=o3d.geometry.KDTreeSearchParamHybrid(
    radius=4, max_nn=300))
Run Code Online (Sandbox Code Playgroud)

我得到的结果不一致,其中一些法线指向内部,而其余的则指向外部。

非常感谢估计法线(黑线表示外部定向法线)

3d graphics point-clouds point-cloud-library open3d

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

使用“new”调用复制构造函数

我对 C++ 很陌生。

我已经读过复制构造函数在将对象作为参数传递给函数或从函数返回对象时以及通过赋值初始化变量时被调用。在这种情况下也可以调用它吗,假设 D 有复制构造函数?

D* pd1 = new D;
D* pd2 = new D(*pd1);
Run Code Online (Sandbox Code Playgroud)

c++ copy-constructor

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

OpenLayer中标记事件的奇怪行为

嘿.我的地图上有标记图层.

每次添加新标记时,我都会将其注册到鼠标单击事件:

var lonlat = new OpenLayers.LonLat(lon,lat);
var marker = new OpenLayers.Marker(lonlat,icon);
marker.id = callId;

marker.events.register("mousedown", marker, function() {AddPopup(marker.id);});

callMarkers.addMarker(marker);
Run Code Online (Sandbox Code Playgroud)

有时我想禁用/启用该事件.所以我使用这些功能:

function EnableAllMarkers()
{ 
    for (var i in callMarkers.markers)
    {
        callMarkers.markers[i].events.remove("mousedown");               

        callMarkers.markers[i].events.register("mousedown", callMarkers.markers[i],   

        function() { AddPopup(callMarkers.markers[i].id); });
    }  
}


function DisableAllMarkers()
{ 
    for (var i in callMarkers.markers)
    {
        callMarkers.markers[i].events.remove("mousedown");
    }  
}
Run Code Online (Sandbox Code Playgroud)

当我使用这段代码时,我会遇到奇怪的行为 - 有时会弹出错误标记的弹出窗口.我点击标记X并弹出Y打开.

有人可以帮帮我吗?

注意:EnableAllmMarkers首先删除事件的原因是因为我们不知道自添加新标记以来是否曾调用过DisableAllmMarkers.如果它确实被调用,删除函数将无能为力.

javascript events markers javascript-events openlayers

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

如何在matlab中向矩阵添加矢量?

如何在Matlab中向矩阵中添加一个向量,方式是将i的向量索引添加到i行的所有成员中?

例如:

A = [1 2 3;
     4 5 6;
     6 7 8]
v = [1;
     2;
     3]
Run Code Online (Sandbox Code Playgroud)

要求的结果是:

[2 3 4;
 6 7 8;
 9 10 11]
Run Code Online (Sandbox Code Playgroud)

非常感谢.

matlab

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

虚函数不称为c ++

我有:

class DeliveryVehicle{
public:
    //c'tor
    DeliveryVehicle(const char* ID, Quality quality);

    //d'tor
    virtual ~DeliveryVehicle();

    int performDeliveryDay(int* numberOfDeliveries);
    ...
protected:
    ...                 

        /* PrintDailySummary: here numberOfDeliveries is a "dummy" parameter but 
        it would be used in the ProfessionalDeliveryVehicle overriding function */
        virtual void PrintDailySummary(int dailyProfit, int numberOfDeliveries = 0) const;
};
Run Code Online (Sandbox Code Playgroud)

可以看出,performDeliveryDay()是一个非虚函数,只有打印函数是虚函数,因为我想在派生类型中打印额外的信息.

在非虚函数performDeliveryDay()内部调用Virtual PrintDailySummary()

[我不添加performDeliveryDay()的实现 - 如果相关我将编辑我的帖子]

另外我有派生类:

class ProfessionalDeliveryVehicle:public DeliveryVehicle {
public:
    //c'tor
    ProfessionalDeliveryVehicle(const char* ID, Quality quality):
                                DeliveryVehicle(ID,quality) {}

    //d'tor
    // Vehicle destructor is called by default

protected:
    void PrintDailySummary(int dailyProfit, …
Run Code Online (Sandbox Code Playgroud)

c++ inheritance virtual-functions

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

vector :: push_back从const Type*转换为type*

签名vector::push_back是:

void push_back (const value_type& val);
Run Code Online (Sandbox Code Playgroud)

这意味着它有责任不腐败val.

我的功能是:

Result User::addFriend(const User* newFriend)
{
    // check that newFriend is valid and is not already a friend
    if (newFriend == NULL || isFriend(newFriend)) return FAILURE;
    friends_.push_back(newFriend);
    friendsNum_++;
    return SUCCESS;
}
Run Code Online (Sandbox Code Playgroud)

当我编译.c文件时,我得到编译错误:

invalid conversion from 'const User*' to 
std::vector User*::value_type
Run Code Online (Sandbox Code Playgroud)
  1. 如果push_back承诺不改变val,为什么我们会得到这个错误?

  2. 克服错误的正确和清洁方法是什么?也许是const_cast

谢谢!

User.h:

class User {
...
public:
    vector<User*> friends_;
...
}
Run Code Online (Sandbox Code Playgroud)

c++ const vector const-cast

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

通过引用捕获对象

我是C++的新手.我看到了一些使用catch块的代码示例,其中异常被值捕获.例如:

catch(SomeClass e)
Run Code Online (Sandbox Code Playgroud)

我也看到了一些引用的例子:

catch(const std:: out_of_range& e)
Run Code Online (Sandbox Code Playgroud)

我假设如果通过引用捕获异常,则应该通过const引用.

我的问题是,当建议使用每种方式时,每种方式有哪些优点/缺点?

谢谢!

c++ reference exception

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

在java中创建接口对象

我遇到了一些Java代码:

public class LocationProvider {

   public interface LocationCallback {
      public void handleNewLocation(Location location);
   }

   // class constructor
   public LocationProvider(Context context, LocationCallback callback){ 
      ...
   }
}
Run Code Online (Sandbox Code Playgroud)

在Java中,我第一次遇到一个带有"type"参数的构造函数或方法,它是一个接口.是否可以创建接口对象?你可以像常规物品一样使用它们吗?

在C++中,我知道创建抽象类的对象是不可能的.

java interface object

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

是否有必要在对象析构函数中为"字符串"成员调用析构函数?

我创建了一个类:

class Message {
public:
  Message(string sender, string message_text);
  Message(string sender);
  Message();

  ~Message();

  bool wasRead() const;
  void updateWasReadStatus();
  void printMessage() const;
private:
  string Sender_;
  string Text_;
  bool wasRead_;
};
Run Code Online (Sandbox Code Playgroud)

当我实现desturctor时,我是否必须显式调用Sender_&Text_的析构函数?或者在我编写时默认析构函数隐式调用它们(没有~Message()显式实现):

delete pMessage; //pointer to Message object
Run Code Online (Sandbox Code Playgroud)

无论如何,我实现了这样的析构函数:

Message::~Message(){
    delete Sender_;
    delete Text_;
}
Run Code Online (Sandbox Code Playgroud)

可以吗?在这种情况下,我可能会计算默认的析构函数吗?

我明白了(请纠正我,如果我错了):当一个默认的析构函数被调用,它要求每个成员的析构函数:

  • 如果存在,则执行一个,
  • 如果不存在,则为默认值.

如果我做不对,如果有人能向我解释,我将不胜感激.

谢谢.

c++ string destructor

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

android 服务、上下文、构建器

我在 Android Developer 中四处阅读,但我并不完全理解这 3 个“想法”:

1) 上下文

2)建设者

3) 服务

以及它们之间的关系如何?

我看到例如: GoogleApiClient mGoogleApiClient = new GoogleApiClient.Builder(context)

而且我并没有确切地了解每个“想法”的一般目的。

java android builder android-service android-context

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