小编Nic*_*pat的帖子

在模板化类中初始化"T&"类型的静态成员的正确方法是什么?

我正在玩一个渴望初始化的通用单例类.这个想法是你从类中公开继承:

class foo : public singleton<foo> { };
Run Code Online (Sandbox Code Playgroud)

我在这个过程中学到了很多,但我现在卡住了,因为它破坏了我的Visual Studio 2008链接器.问题在于静态实例成员和/或其初始化.

template<class T>
class singleton {
    singleton();
    singleton(singleton const &);
    singleton & operator = (singleton const &);
public:
    static T & instance;
};
template<class T> T & T::instance;
Run Code Online (Sandbox Code Playgroud)

任何见解将不胜感激!

编辑:

有了这个班级宣言......

template<class T>
class singleton {
    singleton();
    singleton(singleton const &);
    singleton & operator = (singleton const &);
public:
    static T instance;
};
template <class T> T singleton<T>::instance;
Run Code Online (Sandbox Code Playgroud)

当我尝试这样做时......

class foo : public singleton<foo> { };
Run Code Online (Sandbox Code Playgroud)

我收到这个错误......

错误C2248:'singleton :: singleton':无法访问类'singleton'中声明的私有成员

... …

c++ static templates initialization member

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

如何使用getdate()使用计算列规范来保持日期时间值?

有没有人知道是否有办法实现datetimegetdate()具有计算列的默认绑定的列相同的影响?

我已经尝试设置公式getdate()并坚持到Yes但我得到一个错误

Computed column 'InsertDateTime' in table 'Tmp_Table' cannot be persisted because the column is non-deterministic.

sql-server

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

如何使用转义字符拆分以空格分隔的标记字符串?

我需要将一个空格分隔的字符串标记hey 'this is' some text为一个数组['hey', 'this is', 'some', 'text'](单引号字符是转义字符).

到目前为止我所拥有的内容将在空格上分开,但它没有包含必要的转义字符.

$tokens = preg_split('/[\ \n\,]+/', $whitespaceDelimitedString);
Run Code Online (Sandbox Code Playgroud)

正则表达忍者,出来!! 拜托,谢谢.

php regex

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

专门化一个类模板构造函数

我正在搞乱模板特化,我遇到了一个问题,试图根据使用的策略来专门构建构造函数.这是我试图开始工作的代码.

#include <cstdlib>
#include <ctime>

class DiePolicies {
public:
 class RollOnConstruction { };
 class CallMethod { };
};

#include <boost/static_assert.hpp>
#include <boost/type_traits/is_same.hpp>
template<unsigned sides = 6, typename RollPolicy = DiePolicies::RollOnConstruction>
class Die {
 // policy type check
 BOOST_STATIC_ASSERT(( boost::is_same<RollPolicy, DiePolicies::RollOnConstruction>::value ||
        boost::is_same<RollPolicy, DiePolicies::CallMethod>::value ));
 unsigned m_die;
 unsigned random() { return rand() % sides; }
public:
 Die();
 void roll() { m_die = random(); }
 operator unsigned () { return m_die + 1; }
};

template<unsigned sides>
Die<sides, DiePolicies::RollOnConstruction>::Die() : m_die(random()) { …
Run Code Online (Sandbox Code Playgroud)

c++ templates partial-specialization specialization dice

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

如何将T约束为无符号积分?

我一直在尝试以下方面

interface IUIntegral : IEquatable<Byte>, IEquatable<UInt16>, IEquatable<UInt32>, IEquatable<UInt64> { }
class Counter<T> where T : IUIntegral {
    T _value;
}
Run Code Online (Sandbox Code Playgroud)

使用此调用代码

Counter<UInt32> foo = null;
Run Code Online (Sandbox Code Playgroud)

但是我得到了这个编译错误

Error   1   The type 'uint' cannot be used as type parameter 'T' in the generic type or method 'Test.Counter<T>'. There is no boxing conversion from 'uint' to 'Test.IUIntegral'.
Run Code Online (Sandbox Code Playgroud)

c# type-constraints

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

任何人都知道有任何计划让^为shared_ptr <T>的简写?

例如:

shared_ptr<const shared_ptr<const int> > pp;

是相当令人生畏的......

const int ^ const ^ pp;

立刻让人想起原始指针等效

const int * const * pp;

c++ smart-pointers shared-ptr

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

我该如何解决这种歧义?

我正在尝试使用具有相同名称的字段和方法.

class Foo {
    String Bar;
    String Bar() { return "woo"; }
}
Run Code Online (Sandbox Code Playgroud)

Error 8 Ambiguity between 'Foo.Bar' and 'Foo.Bar()'

我可以不做Bar()扩展方法吗?例如,这是有效的

class Foo {
    String Bar;
}

public class Woo {
    public static String Bar(this Foo) { return "woo"; }
}
Run Code Online (Sandbox Code Playgroud)

c#

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

我怎样才能使这更简洁?

var users = from user in st.Users
            where user.UDID == cr.User.Udid
            select user;
var cityIds from city in users.First().Cities
            select city.ID;
DoSomethingWith(cityIds);
Run Code Online (Sandbox Code Playgroud)

它始于此查询:

select CityID from UserCities inner join User on User.ID=UserID where User.UDID=@UDID;

我似乎无法使用Linq-to-Entities获得正确的连接语法

c# linq

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

使成员私有或内部帮助编译器进行优化吗?

我正在阅读Eric Lippert的帖子

http://blogs.msdn.com/b/ericlippert/archive/2010/09/30/the-truth-about-value-types.aspx

所以我想知道开发人员可以做些什么来帮助C#编译器进行优化,例如使用堆栈而不是堆.例如,如果您在程序集内部创建属性而不是protected/public,则编译器可以考虑保证在程序集外部不会看到该属性,因此不可能引用该属性.

class Foo {
    internal Object Bar;
}
Run Code Online (Sandbox Code Playgroud)

显然,在优化编译器和编写实际上比QA /单元测试要求更正确的代码之间存在一条细线,以帮助编译器对其做出更强的假设.

我也想知道其他什么可以帮助优化器,并且在增加正确性的意义上也值得付出努力.

.net c#

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

为什么这个简单的代码会产生'Undefined variable:bar'

class A {
    protected $bar = 'bar';
    public function foo() {
        echo $this->$bar;
    }
}

$a = new A();
$a->foo();
Run Code Online (Sandbox Code Playgroud)

令人难以置信的是,这不起作用.我来自C++和C#,所以我可能对PHP不了解.

php php-5.4

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