小编The*_* do的帖子

我该如何申报迭代器?

哪种形式是首选:

String my = "Which form shall I use?";
Iterator iter = my.iterator();
Run Code Online (Sandbox Code Playgroud)

要么

Iterator<String> iter = my.iterator();
Run Code Online (Sandbox Code Playgroud)

我个人更喜欢前者,但在我的材料中,他们使用后者.

java iterator

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

多重继承

在你开始投票给我之前请大家阅读这个问题,请理解我不会尝试在这里开始任何不愉快的事情.

这个问题的唯一原因是我越来越意识到这一点,为了更有用,我必须知道Java和/或C#.

好的,这是一个问题:

我知道在J和C#中禁止多重继承.但是如果我做这样的事情(因为我希望有一个继承自B和A两个类的类):

//code in Java
public class B
{
    public void methodFromB()
    {
    }
}

public class A extends B
{
    public void  methodFromA()
    {
    }
}

public class C extends A
{
    public void methodFromC()
    {
    }
}
Run Code Online (Sandbox Code Playgroud)

事实上,据我所知,我确实继承了它们(A和B,是的,我确实理解对此的正式解释是对象A是一个专门的B但是如果我想这样做的话就更少了我会,但它看起来不漂亮)

但是,不是在一个声明中执行此操作,而是必须首先创建一个继承自另一个类的类,然后从它派生?

虽然有趣的事情.在上面声明了这些类(在NetBeans中)后,我看到在创建了类C的实例(在main中)之后,我无法在它上调用methodFromC,这是在这个类中定义的方法.

这是什么原因?

谢谢.

c# java inheritance

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

获取对象的类型

我试图沿着这些方向做点什么:

int var = 5;
std::numeric_limits<typeid(var)>::max();
Run Code Online (Sandbox Code Playgroud)

但惊讶的是,它不起作用.我怎样才能解决这个问题?
谢谢.

c++ typeinfo

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

无法取消分配mem

为什么在这段代码中(这只是工作代码而不是完全异常安全)我收到一个断言错误:
HEAP_CORRUPTION_DETECTED ...

class Allocator
{

public:

    explicit Allocator()
    {
        std::cout << "Allocator()" << '\n';
    }

    virtual ~Allocator()
    {

        std::cout << "~Allocator()" << '\n';
    }

    template<class T>
    T* Allocate(const std::size_t count)
    {
        return static_cast<T*>(::operator new(count));
    }

    /*[nothrow]*/
    template<class T>
    void Construct(void* where_, const T& what)
    {
        new (where_) T(what);
    }

    template<class T>
    void Destruct(T* where_)
    {
        where_->~T();
    }

    template<class FwdIter>
    void Destruct(FwdIter first, FwdIter last)
    {
        while (first != last)
        {
            this->Destruct(&*first);
            ++first;
        }
    }

    template<class T>
    void Deallocate(T* where_) …
Run Code Online (Sandbox Code Playgroud)

c++ memory-management

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

指向成员函数的指针问题

在下面的代码中(请参阅评论):

#include "stdafx.h"

#include <iostream>
using std::cout;

struct Base
{
 void fnc()
 {
  cout << "Base::fnc()";
 }

};

struct Impl
{
 void* data_;
 Impl(void (Base::*fp)())
 {
  fp();//HERE I'M INVOKING IT - I'M DOING SOMETHING WRONG!
 }
};
int _tmain(int argc, _TCHAR* argv[])
{
 return 0;
}  
Run Code Online (Sandbox Code Playgroud)

错误
"错误1错误C2064:术语不评估为采用0参数的函数"为什么它不起作用以及如何解决它?

c++ member-function-pointers

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

我的基地在哪里创建?

如果我有:

struct Base
{
};

struct Derived : Base
{
};
Run Code Online (Sandbox Code Playgroud)

我创建了Derived in main:

Derived* d = new Derived;
Run Code Online (Sandbox Code Playgroud)

我的基地创建在哪里(在堆上或堆栈上)?我是否正确地推断Base是Derived的一部分,因此它是在创建Derived的地方创建的?或者它以其他方式工作?

c++ inheritance

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

移动ctor困境

为了禁用我的课的拷贝,我想声明为private但没有定义operator=(const MyClass&)MyClass(const MyClass&)-我对这个班也禁止移动构造函数?

c++ move-semantics c++11

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

取消引用nullptr时,编译器不会发出警告

这个:

int* p = nullptr;
auto tmp = *p;  
Run Code Online (Sandbox Code Playgroud)

不会导致gcc 4.6和VS2010 sp1至少发出警告.在这些编译器中是否有任何选项可以让它们在这种情况下发出警告?我使用/ w4在VS中进行了测试编译.

c++ null compiler-warnings dereference

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

函数签名中的'class'关键字 - 它是标准的C++吗?

我正在研究给我的代码,我看到:

AFPSGameMode::AFPSGameMode(const class FPostConstructInitializeProperties& PCIP)
    : Super(PCIP) {   }
Run Code Online (Sandbox Code Playgroud)

我对class关键字的使用特别好奇.这是标准的C++,如果是这样,它意味着什么?

谢谢.

c++ parameters syntax

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

c ++中的抽象类

假设我上课了:

class Bad_Date
{
private:
const char* _my_msg;
public:
const char* msg() const
{
return _my_msg;
}
};
Run Code Online (Sandbox Code Playgroud)

我想不能创建这个类的任何对象,但我真的不想在那里放任何其他东西,并使其成为纯虚拟fnc.有没有其他方法可以使这个类抽象或我必须创建虚拟fnc并将其声明为纯虚拟?谢谢.

c++ polymorphism abstract-class

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