小编che*_*erd的帖子

为什么单元格数组中的尾随逗号有效Matlab语法?

今天我很惊讶地发现了这一点

A = {1,2,3}
Run Code Online (Sandbox Code Playgroud)

B = {1,2,3,}
Run Code Online (Sandbox Code Playgroud)

在MATLAB中都是有效的语法.我原以为第二个语句会产生错误.尽我所知,他们生成相同的单元格数组(all([A{:}]==[B{:}])返回true).

有没有理由允许第二种语法?这是解析器中的错误吗?是AB真正的一样吗?

有趣的是,以下是合法的:

C = {1,2,3,,,}
Run Code Online (Sandbox Code Playgroud)

arrays syntax matlab operators cell-array

18
推荐指数
2
解决办法
542
查看次数

给定一个指针调用括号重载

我可以使用以下签名重载括号运算符:

char& operator()(const int r, const int c);
Run Code Online (Sandbox Code Playgroud)

这个用途的目的是:

// myObj is an object of type MyClass
myObj(2,3) = 'X'
char Y = myObj(2,3);
Run Code Online (Sandbox Code Playgroud)

这符合我的预期.但是,在处理指针时使用括号运算符会变得复杂.我想要做:

// pMyObj is a pointer to an object of type MyClass
pMyObj->(2,3) = 'X';
char Y = pMyObj->(2,3);
Run Code Online (Sandbox Code Playgroud)

但是,这种语法会产生错误Error: expected a member name(至少在VisualStudio中).

下面的确有效,但对于我来说,除了参数之外还有更多的括号和更多的括号.

char X = (*pMyObj)(2,3);
Run Code Online (Sandbox Code Playgroud)

有没有办法使用->运算符来调用()重载?

c++ syntax operator-overloading parentheses

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

是否可以在Java中为具有接口成员变量的类编写复制构造函数?

如何为具有接口成员变量的类编写复制构造函数?

例如:

public class House{

    // IAnimal is an interface
    IAnimal pet;

    public House(IAnimal pet){
        this.pet = pet;
    }

    // my (non-working) attempt at a copy constructor
    public House(House houseIn){
        // The following line doesn't work because IAnimal (an interface) doesn't 
        // have a copy constructor
        this.pet = new IAnimal(houseIn.pet);
    }
}
Run Code Online (Sandbox Code Playgroud)

我被迫有一个混凝土Animal吗?如果是这样的话,似乎重复使用课程与狗的房子与猫的房子变得错综复杂!

java interface copy-constructor member-variables

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

普通模板的结束和元模板从何处开始?

Jörg这个问题的回答很好地描述了"正常"模板(问题所指的,可能是错误的,作为泛型),它们操作在程序上运行的数据和元模板.Jörg然后明智地提到程序数据,所以它真的是一样的.也就是说,元模板仍然是一个不同的野兽.普通模板的结束和元模板从何处开始?

我能想到的最好的测试是模板的参数是独占的class还是typename模板是"正常的",否则是元.这个测试是否正确?

c++ templates template-meta-programming

7
推荐指数
2
解决办法
582
查看次数

SQLiteOpenHelper类对context参数做了什么?

我正在扩展SQLiteOpenHelper课程.我的构造函数是

public MyDatabaseHelper(Context context) {
    super(
        context,         // ???
        "MyDatabase.db", // Database name
        null,            // Cursor factory
        1                // database version
    );
}
Run Code Online (Sandbox Code Playgroud)

SQLiteOpenHelper构造函数对上下文信息做了什么?

对于我的应用程序,无论程序状态(上下文)如何,构造函数的行为都相同.我可以在没有任何未来问题的情况下传递null吗?

database sqlite android constructor

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

模板成员变量

考虑以下两个类:

class LunchBox
{
  public:
    std::vector<Apple> m_apples;
};
Run Code Online (Sandbox Code Playgroud)

class ClassRoom
{
  public:
    std::vector<Student> m_students;
};
Run Code Online (Sandbox Code Playgroud)

这些类是相似的,因为它们都包含对象的成员变量向量; 然而,它们是不相似的,因为向量的对象是不同的,并且成员变量具有不同的名称.

我想写一个模板,它接受LunchBoxClassRoom作为模板参数(或其他一些参数)和相同类型的现有对象(类似于a std::shared_ptr).模板将返回一个对象,该对象添加了一个getNthElement(int i);成员函数以改进对方法的访问.用法如下:

// lunchBox is a previously initialized LunchBox
// object with apples already pushed into m_apples
auto lunchBoxWithAccessor = MyTemplate<LunchBox>(lunchBox);
auto apple3 = lunchBoxWithAccessor.getNthElement(3);
Run Code Online (Sandbox Code Playgroud)

我想这样做而不为每个类编写模板特化(这可能需要指定成员变量以某种方式操作).最好,我不想修改LunchBoxClassRoom类.写这样的模板有可能吗?

c++ templates member-variables

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

比较双精度与自适应近似相等

我试图制作一个自适应的"约等于"方法(用C#编写,但问题是一般的)接受两个双精度并返回一个布尔值,如果它们是"大致相等"或不是.通过自适应,我的意思是:

1.234和1.235 ==> TRUE

1.234567和1.234599 ==> FALSE

也就是说,"约等于"的准确性适应数字的精确性.

我找到了一个四舍五入的概念如何找到两个变量大致相等?但是仍然有一个开放性的问题,即如何使用epsilon.

是否有人知道这类问题的最佳做法?提前致谢!

编辑:我的初步问题没有包含足够的信息,我想要得到什么.抱歉,我的道歉.我想要一个程序,它可以将更高的准备数量处理到更高的标准,同时对更低的准确数量更宽松.对的更多例子是(其中'(0)'是隐含的零):

1.077和1.07(0)返回false(因为77与70非常不同)

1.000077和1.00007(0)返回false(因为77与70非常不同)

1.071和1.07(0)返回true(因为71接近70

1.000071和1.00007(0)返回true(因为71接近70)

无论实现代码如何,我都假设会有某种"容差"变量来确定什么是"非常不同"和什么是"接近".

c# equals approximate

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

推广构造函数以在C#中对数组进行操作

我想知道如何在数组的每个元素上应用构造函数,然后返回构造对象的数组.具体来说,我正在使用C#TreeNode.我想要的概念如下:

string[] animals = {"dog","cat","mouse"};
TreeNode[] animalNodes = TreeNode[](animals);
Run Code Online (Sandbox Code Playgroud)

哪里TreeNode[](animals)会产生累积效应

animalNodes[0] = TreeNode("dog");
animalNodes[1] = TreeNode("cat");
animalNodes[2] = TreeNode("mouse");
Run Code Online (Sandbox Code Playgroud)

我知道我可以foreach手动加载这样的结构,但如果可能的话,我正在寻找优雅的"一线"方式.我看起来很长很难,但是找不到任何东西.

c# arrays

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

指针和面向对象的编程

指针如何与面向对象编程的概念一起使用?

据我了解(并且请注意,我被归类为ID-10T),OOP的主要原则是遏制并保持管理责任(内存/实现/等)包含在类中; 但是当一个对象的方法返回一个指针时,我们似乎正在" 弹出 "该对象.现在,有人可能需要担心:

  1. 难道他们应该删除指针的关联对象?
  2. 但是如果班级仍然需要这个对象呢?
  3. 他们可以改变对象吗?如果是这样,怎么样?(我认识const可能会解决这个问题)
  4. 等等......

这似乎对象的用户现在需要知道多少更多关于类是如何工作的,什么阶级期望用户的.感觉就像是一只"淘汰猫咪"的情景,似乎在面对OOP时是一种打击.

注意:我注意到这是一个与语言无关的问题; 但是,在C++环境中工作时,我被提示提出问题.

c++ oop pointers responsibility

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