小编Rak*_*111的帖子

控制符号可见性的标准方法

在C++中使用C和plain函数,我可以使用static关键字阻止函数的符号输出:

static int foo(int a, int b) { /* ...  */ }
Run Code Online (Sandbox Code Playgroud)

但在一个类中,定义一个函数static具有完全不同的含义.有没有办法确保编译器我的整个类只能在模块中使用,而且不需要导出它的任何方法的符号?

c++ c++14

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

无法匹配预期类型具有实际类型IO()的人员

我已经开始学习Haskell,并阅读Learn You Haskell.第8章处理"制作我们自己的类型和类型类",我有一个错误信息,这对我来说是一个问题.可能解决方案是一个小问题,但我找不到它,所以请揭示提示,或者帮我解释一下.

data Person = Person { firstName :: String  
                     , lastName :: String  
                     , age :: Int  
                     } deriving (Eq, Show, Read)  

mikeD = Person {firstName = "Michael", lastName = "Diamond", age = 43}  

main = print $ read "Person {firstName =\"Michael\", lastName =\"Diamond\", age = 43}" :: Person
Run Code Online (Sandbox Code Playgroud)

这是我收到的错误消息

Couldn't match expected type `Person' with actual type `IO ()'
In a stmt of a 'do' block:
    print
    $ read
        "Person {firstName =\"Michael\", lastName =\"Diamond\", age = 43}" …
Run Code Online (Sandbox Code Playgroud)

io haskell types

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

在Visual Studio for Mac中创建C/C++控制台项目?

Visual Studio for Mac社区版的项目模板下拉列表中包含的选项仅包括C#,F#,IL和VBNet.我有兴趣创建一个C/C++控制台项目.

Visual Studio Community for Mac的屏幕截图

visual-studio visual-studio-mac

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

没有辅助变量的std :: vector中的Pushing_back值

我想知道如果不使用另一个变量就可以将push_back变量变成a std::vector.很长一段时间我一直这样做:

std::vector<int> v;

int temp;
std::cin >> temp;
v.push_back(temp);
Run Code Online (Sandbox Code Playgroud)

我想知道是否有可能在一行中做同样的事情:

v.push_back(READING_HERE);
Run Code Online (Sandbox Code Playgroud)

c++ c++11

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

C++ 11 std ::在运行时有条件?

我想做这样的事情:

void func(void *data, const int dtype)
{
    typedef typename std::conditional<dtype==0,float,double>::type DataType;

    funcT((DataType *)data);

    return;
}
Run Code Online (Sandbox Code Playgroud)

这不会编译,因为dtype需要在编译时知道.我试图避免使用switch语句,因为我正在使用8个数据类型,有许多函数,如上面的那些,通过ctypes从Python调用.

有没有像std :: conditional这样的方法可以在运行时完成,利用传入的dtype标识符?

c++ conditional std c++11

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

通用lambda的熟悉模板语法

对于c ++ 20,建议为通用lambdas p0428r2.pdf添加以下语法

auto f = []<typename T>( T t ) {};
Run Code Online (Sandbox Code Playgroud)

但是gcc 8中的当前实现不接受以下实例化:

f<std::string>("");
Run Code Online (Sandbox Code Playgroud)

这是gcc中的实现错误还是缺少语言功能?我知道我们谈的是提案,而不是批准的规范.

完整示例(与模板函数语法比较):

template <typename T> void n( T t ) { std::cout << t << std::endl; }

auto f = []<typename T>( T t ) { std::cout << t << std::endl; };

int main()
{
    f<std::string>("Hello");  // error!
    n<std::string>("World");
}
Run Code Online (Sandbox Code Playgroud)

抱怨以下错误:

main.cpp:25:22:错误:在'>'标记f之前的预期primary-expression("Hello");

c++ lambda language-lawyer c++20

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

新/新[]匹配是否应删除/删除[]?

我知道当我们使用new/new []分配内存时,我们应该分别使用delete/delete []来释放内存.

这是问题,

我可以使用delete []来释放new分配的内存吗?

例如,

int *pInt3 = new int;
delete [] pInt3;
pInt3 = NULL;

T *pT3 = new T;
delete [] pT3;
pT3 = NULL;
Run Code Online (Sandbox Code Playgroud)

谢谢

c++

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

标签'\ t'的间距不一致

\t用来分隔我的输出,但它产生不一致的空格.

例如,以下代码生成

#include <iostream>

int main()
{
    std::cout << "Terms\tResults\tet(%)\tea(%)\n";
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

Terms Results et(%) ea(%)

注意空间的差异

为什么会这样?

c++ format

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

使用一个函数对两个不同的向量(每个都具有"活动"bool)进行排序

我创建了具有ACTIVE BOOL的基类

class BaseTest{
public:
    bool active = false;

    BaseTest(){
    // make most true
        if ( getRand(0, 5) != 2){
            active = true;
        }
    }
};
Run Code Online (Sandbox Code Playgroud)

创建两个不同的子类

class ChildTest_1: public BaseTest{

    string child1 = "Is child 1";

public:

    ChildTest_1(){

    }
};

class ChildTest_2: public BaseTest{

    string child2 = "Is NOT child 1";

public:

    ChildTest_2(){

    }

};
Run Code Online (Sandbox Code Playgroud)

我希望能够将子(或带有"ACTIVE"的任何向量)传递给此函数,它将返回第一个非活动状态.我有一个程序,它运行许多对象的很多向量,并且通常有一个管理每个对象向量的类.在每个mgmt类中编写此循环正在变得痛苦和浪费重复的代码.我想要一个我可以传递任何具有活动var的对象的向量.

我现在不需要排序,但这是我所需要的最接近的术语.

我需要的是一个函数,我可以传递一个向量,它将返回第一个非活动对象;

如果它们不需要共享基类,只要向量中的每个对象都有自己的ACTIVE bool,那就更好了,但是我也可以创建一个简单的基类,它都可以从中派生出来.

int firstInactive(vector<BaseTest> & test ){

    for ( int cnt = 0 ; cnt < test.size() ; cnt++ ){

        if …
Run Code Online (Sandbox Code Playgroud)

c++ templates vector c++11

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

通过实现两个不同于const的函数来避免代码重复

我有一个泛型Matrix类,我有两个版本operator(),一个const方法返回索引的const引用,一个非const方法返回索引的非const引用(允许我更改它.

我试图通过使用const_cast并调用const版本来使用非const版本,但由于某种原因它不起作用:

template<typename T>
class Matrix
{

    std::vector<T> _matrix;
    unsigned int _rows;
    unsigned int _cols;
 public:
    const T& operator()(unsigned int row, unsigned int col) const
    {
        return _matrix[col + (_cols * row)];
    }

    T& operator()(unsigned int row, unsigned int col)
    {
    return const_cast<T&>(static_cast<const Matrix*> (*this).operator(row, col));
    }
};
Run Code Online (Sandbox Code Playgroud)

它不允许我在最后一行向操作符添加(row,col).有任何想法吗?

c++

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