标签: explicit

为什么shared_ptr<int> p; p=nullptr;编译?

由于 的构造函数std::shared_ptr被标记为显式构造函数,因此 like 的表达式auto p = std::make_shared<int>(1); p = new int(6);是错误的。

我的问题是为什么std::make_shared<int>(1); p = nullptr;编译

这是前面提到的代码片段:

#include <memory>
#include <iostream>

int main()
{
    auto p = std::make_shared<int>(1);

    //p = new int(6);

    p = nullptr;

    if(!p)
    {
        std::cout << "not accessable any more" << std::endl;
    }

    p.reset();
}
Run Code Online (Sandbox Code Playgroud)

此类代码可在std::shared_ptr: reset() vs. assignment中看到

c++ explicit smart-pointers shared-ptr c++11

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

“explicit”关键字如何影响 C++ 复制构造函数和函数参数?

修改复制构造函数的“ explicit ”关键字可能会导致问题。\n作为函数参数传递的对象特别容易受到这些问题的影响。

\n

这是我的代码:

\n
#include <iostream>\n#include <string>\n\nclass Pig{\npublic:\n    std::string _name;\npublic:\n    Pig(std::string n) : _name(n) {}\n    //~Pig() = default;\n    explicit Pig(const Pig &other) {\n        std::cout << "copy ctor!" << std::endl;\n        this->_name = other._name;\n    }\n};\n\nvoid show(Pig p) {\n    std::cout << p._name << std::endl;\n}\n\nint main() {\n    Pig pig{std::string("hello")};\n    show(Pig{pig});     // no pass\n    // show(Pig(pig));  // no pass\n    return 0;\n}\n
Run Code Online (Sandbox Code Playgroud)\n

编译器版本:g++(Ubuntu 9.4.0-1ubuntu1~20.04.1)9.4.0。

\n

上面提到的代码不能用c++14 或更低版本编译,\n但用c++17 及更高版本编译成功。

\n

这是编译器的错误:

\n
test.cpp: In function \xe2\x80\x98int main()\xe2\x80\x99:\ntest.cpp:22:7: error: cannot …
Run Code Online (Sandbox Code Playgroud)

c++ compiler-errors explicit copy-elision elision

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

我想扩展std :: string,但不是因为你可能会想到的原因

我有一个有效地采用字符串的方法.但是,我想要使用的字符串子集非常有限.我想把typedef'ing std :: string作为一些类,并将函数调用为显式.但是,我不确定这是否会奏效.想法?

c++ typedef explicit

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

NULL在类析构函数中

可能重复:
是否值得在析构函数中设置指向NULL的指针?

NULL在析构函数中设置指针(分配堆内存)是没有意义的吗?

class SampleClass
{
    public:
        SampleClass( int Init = 0 )
        {
            Value = new int( Init );
        }

        ~SampleClass( void )
        {
            delete Value;
            Value = NULL; // Is this pointless?
        }

        int *Value;
};
Run Code Online (Sandbox Code Playgroud)

关于课程的主题,我explicit什么时候应该使用关键字?

c++ null destructor explicit class

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

我可以在Java中重命名已实现的方法吗?

我有一个实现接口的类,其中一个方法叫做onClick.有没有办法实现接口想要的onClick,但是将其命名为其他东西?像(我正在做的):

public void AnyMethodNameIWant() implements Interface1.onClick
Run Code Online (Sandbox Code Playgroud)

我问的三个原因是:

  1. 看一下方法签名并知道它来自一个接口会很好
  2. 要避免像onClick这样的"通用"名称,接口可能需要我拥有
  3. 在许多接口中区分相同的方法名称

如果这是一个基本上"坏"的问题,我很抱歉,因为我不熟悉Java.

java rename explicit interface

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

明确的模板专业化

我不想问这样一个普遍的问题,但下面的代码是显式模板专业化的练习.我一直收到错误:

c:\ users\***\documents\visual studio 2010\projects\template array\template array\array.h(49):error C2910:'Array :: {ctor}':无法显式专门化

#ifndef ARRAY_H
#define ARRAY_H

template <typename t>`
class Array
{
public:
Array(int);

int getSize()
{
    return size;
}
void setSize(int s)
{
    size = s;
}
void setArray(int place, t value)
{
    myArray[place] = value;
}
t getArray(int place)
{
    return myArray[place];
}
private:
    int size;
    t *myArray;
};

template<typename t>
Array<t>::Array(int s=10)
{
    setSize(s);
    myArray = new t[getSize()];
}

template<>
class Array<float>
{
public:
    Array();
 };

template<>
Array<float>::Array()
{ …
Run Code Online (Sandbox Code Playgroud)

c++ templates explicit template-specialization

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

如何明确引用此模板成员?

如果模板成员模板的唯一成员,并且它们共享模板的名称,可以隐式引用模板成员:

template foo(int number)
{
    immutable int foo = number;
}

void main()
{
    writeln(foo!(123)); // Okay.
}
Run Code Online (Sandbox Code Playgroud)

但是,如果我想明确地引用该成员呢?

writeln(foo!(123).foo); // Error: attempts to access the foo property of int.
Run Code Online (Sandbox Code Playgroud)

我没有充分的理由,但我觉得这一定是可能的.

templates d explicit implicit

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

实体框架显式加载示例

我在"northwind"数据库上尝试这部分代码.但是我收到了DataBind错误

    protected void Page_Load(object sender, EventArgs e)
    {

        if (!Page.IsPostBack)
        {
            GetSpecificCustomer();
        }
    }

    private void GetSpecificCustomer()
    {
        using (var ctx = new northwindContext())
        {
            var query = ctx.Customers.Include("CustomerID").Take(3);

            grdEmployees.DataSource = query;
            grdEmployees.DataBind(); =>NotSupportedException was unhandled by user code(Data binding directly to a store query (DbSet, DbQuery, DbSqlQuery) is not supported. Instead populate a DbSet with data, for example by calling Load on the DbSet, and then bind to local data. For WPF bind to DbSet.Local. For WinForms bind to …
Run Code Online (Sandbox Code Playgroud)

explicit entity-framework-4

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

实体框架显式加载多级

我尝试使用显式加载加载多级但发生错误:

"属性路径'Channel.Posts'不能用于导航属性.属性路径只能用于访问原始或复杂属性."

这是我的代码:

var listSubs;

using (var db = new GamePortalContext())
{
    listSubs = db.Subscribers.Include("Channel").Where(o => o.User.Username == username.ToLower() &&  o.Channel.IsActive && o.Channel.IsPublic && o.Channel.Posts.Count(p => p.PublishTime <= DateTime.Now && p.IsActive && p.IsHot) > 0);
    if (listSubs.Any())
    {
        listSubs = listSubs.OrderByDescending(o => o.Channel.ChannelTrack.LastPublishTime);
        listSubs = (num == int.MinValue) ? listSubs : listSubs.Take(num);
        foreach (var item in listSubs)
        {
            db.Entry(item).Collection(o => o.Channel.Posts).Query().Where(i => i.IsHot && i.IsActive && i.PublishTime <= DateTime.Now).Take(numpost).Load();
        }

        return listSubs.ToList();
    }
    else
    {
        return null;
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我的帖子和频道实体 …

entity-framework explicit

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

在Python函数中显式定义数据类型

我想在python函数中定义2个变量,并将它们显式定义为float.但是,当我尝试在函数参数中定义它们时,它显示语法错误.

请帮我获得所需的输出.

这是代码:

def add(float (x) , float (y)) :
    z = (x+y)
    return (print ("The required Sum is: ", z))

add (5, 8)
Run Code Online (Sandbox Code Playgroud)

python floating-point explicit function python-3.x

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