小编The*_* do的帖子

指定模板参数

如何指定有效模板参数所需的内容?我的意思是让我们举例如下:

template<class T>
void f(const T& obj)
{
//do something with obj
} 
Run Code Online (Sandbox Code Playgroud)

但我希望T只是整数类型所以我会接受char,int,short unsigned等但没有别的.是否(我确定有)一种方法来检测它作为模板arg提供什么?
谢谢.

c++ templates

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

我可以指定是否设置了setter?

这是一个简单的Address类的初始规范.这是一种简化,因为它忽略了诸如同一建筑物内的公寓可能具有相同"数量"的复杂性,
例如29a,29b.

 class Address
    {
    private:
    int number;
    string name;
    string postcode;
    public:
    //getters implemented but ommited 
    };
Run Code Online (Sandbox Code Playgroud)

如果Address被假定为一个实用程序类(可能将来可能被其他开发人员用于其他项目):

//问题
1.对于上面规范中给出的Address的每个属性,说明为Address类配备相应实例变量的setter方法是否合适.在每种情况下给出简短的理由.

伙计这是我的任务中的问题所以请不要质疑类地址的设计方式.

oop setter

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

模板问题

为什么我能做到这一点:

#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;

void myfunction (int i) {
  cout << " " << i;
}

int main () {
  vector<int> myvector;
  myvector.push_back(10);
  myvector.push_back(20);
  myvector.push_back(30);

  cout << "myvector contains:";
  for_each (myvector.begin(), myvector.end(), myfunction);//<-------See below
return 0;
}
Run Code Online (Sandbox Code Playgroud)

但不能这样做:

template<class T>
    void myfunction (T i) {
          cout << " " << i;
        }
Run Code Online (Sandbox Code Playgroud)

我怀疑它与args演绎有关,但令人愤怒的是"常规"fnc被接受而模板却没有.

c++ templates

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

了解堆上保留内存的大小

有没有办法在堆上获得以前分配的内存的大小?
例如:

//pseudo-code

void* p = operator new (sizeof(int) * 3);
unsigned size = getSomeHow(p);  
Run Code Online (Sandbox Code Playgroud)

c++

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

Boost :: Test的问题

为什么这(从升级网站复制)给我一个错误?!在VS 2010旗舰版:

#include <boost\test\unit_test.hpp>

#define BOOST_TEST_MODULE MyTest


int add( int i, int j ) { return i+j; }

BOOST_AUTO_TEST_CASE( my_test )
{
    // seven ways to detect and report the same error:
    BOOST_CHECK( add( 2,2 ) == 4 );        // #1 continues on error

    BOOST_REQUIRE( add( 2,2 ) == 4 );      // #2 throws on error

    if( add( 2,2 ) != 4 )
      BOOST_ERROR( "Ouch..." );            // #3 continues on error

    if( add( 2,2 ) != 4 ) …
Run Code Online (Sandbox Code Playgroud)

c++ boost unit-testing

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

获取小数点

如何获得一个数字的小数点?例如:
如果我有 1.5 如何得到 5 号?

c++

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

memmove不动

memmove并没有真正移动内存不对吗?它只是将内存从一个区域复制到另一个区域,并允许这两个区域重叠.我问这个问题是因为我只是想知道为什么这个fnc以非常误导的方式被调用.
因为我明白当某个东西从一个地方移动到另一个地方时,"东西"就是在另一个地方而不是第一个地方之后.而memmove它不会那样工作.我对吗?

c c++ memory libc

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

为什么这个c ++ lamba函数不能编译?

为什么这不能编译:

int myVar = 0;
myVar ? []()->void{} : []()->void{};
Run Code Online (Sandbox Code Playgroud)

以下错误消息:

错误2错误C2446:':':没有从'red_black_core ::`anonymous-namespace':: <lambda1>'转换为red_black_core :: anonymous-namespace :: <lambda0>

虽然这符合正确:

void left()
{}
void right()
{}

int myVar = 0;
myVar ? left() : right();
Run Code Online (Sandbox Code Playgroud)

c++ lambda c++11

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

三元运算符

是否有任何逻辑上的原因可以解释为什么在三元optor中两个分支必须具有相同的基类型或可以转换为一个?没有这个规则有什么问题?为什么我不能做这样的事情(这不是最好的例子,但澄清了我的意思):

int var = 0;

void left();
int right();

var ? left() : right();
Run Code Online (Sandbox Code Playgroud)

c++ ternary-operator

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

Code构建的exe构建几乎是Visual Studio构建的相同代码的57倍

这段代码:

#include <iostream>
using namespace std;

int main()
{
    cout << "Hello world!\n";
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

当com ::在GCC 4.4.1的Code :: Blocks中给出大小为457KB,在VS2010中只有8KB(8).这两个编译器都针对大小进

谁知道为什么会有这样的差异?

c++ codeblocks visual-studio-2010

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