小编rah*_*210的帖子

什么是赋值运算符的返回类型?

我刚刚开始使用C++.我对赋值和解引用运算符的返回类型有点困惑.我正在阅读C++ Primer一书.在不同的场合,作者说,赋值运算符的返回类型是对左手操作数的类型的引用,但后来,他说返回类型是左手操作数的类型.我已经提到了C++ 11标准版.5.17,其中返回类型被描述为"左手操作数的左值".

同样,我无法弄清楚dereference是返回指向对象还是返回对象的引用.

这些陈述是否相同?如果是这样,那怎么样?任何解释将不胜感激.

c++ reference lvalue dereference assignment-operator

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

PyCharm远程部署:未保存用户名

使用PyCharm的专业版,我正在尝试配置服务器以通过SFTP远程部署我的项目,并使用OpenSSH +身份验证代理作为auth类型.我试过配置PyCharm Settings > Build, Execution and Deployment > Add server.但是,即使我通过Test SFTP连接按钮设置并验证配置成功,只要单击Apply或OK,用户名就会因某种原因变为空白.此后,当我尝试与远程服务器同步时,连接失败.

我找到了一个可能的解决方法,通过将主机名更改为user @ host表单,这样可行,但是当我尝试在其下设置远程解释器时,我无法使用相同的服务器配置Project > Project Interpreter > Add SSH interpreter.(它显示我的主机网址ssh://null@host).我猜null是因为PyCharm在某种程度上没有保存用户名.我已经尝试编辑该.idea/webServers.xml文件,但找不到合适的键值对来更改用户名来保存.

任何帮助都会很棒!

python ide jetbrains-ide pycharm

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

由于c ++ 11错误,无法构建GCC

我需要一个旧版本的GCC来安装CUDA工具包,因为CUDA工具包不支持比5.3.1更新的GCC,而我试图在它上面安装它的Fedora机器是用GCC 6.我没有太多的控制权.机器,所以我不得不求助于自己建造GCC.我遵循的步骤是:

$ cd gcc-5.3.0
$ contrib/download_prerequisites
$ cd ../build
$ ../gcc-5.3.0/configure --prefix=$HOME/local/gcc-5.3.0 --program-suffix=5.3 --enable-shared --enable-multiarch --enable-threads=posix --enable-languages=c,c++,fortran --enable-checking=release --with-tune=generic
$ make
Run Code Online (Sandbox Code Playgroud)

这导致成功configure,但make失败并出现错误:

cfns.gperf:101:1: error: ‘const char* libc_name_p(const char*, unsigned int)’ redeclared inline with ‘gnu_inline’ attribute
Run Code Online (Sandbox Code Playgroud)

还有一大堆其他C++ 11警告.一些谷歌搜索后,我想,这不得不做与建设GCC 5或以上的GCC 6.我想这可能帮助,如果我能强制编译器按照C++ 98来代替.所以,我尝试过:

$ export CXXFLAGS="-std=gnu++98"
$ ../gcc-5.3.0/configure ...
$ make
Run Code Online (Sandbox Code Playgroud)

没工作.我仍然继续得到相同的C++ 11警告,构建失败并出现完全相同的错误.然后,我试过:

$ ../gcc-5.3.0/configure CXXFLAGS="-std=gnu++98" ...
$ make
Run Code Online (Sandbox Code Playgroud)

同样,同样的错误.这次我偷看了Makefile,它肯定已经CXXFLAGS到了-std=gnu++98这里.此外,我也尝试构建GCC 4.9.3,看看这是否是与特定版本相关的问题,但我又遇到了同样的错误.

我不知道如何进一步.任何帮助深表感谢.谢谢.

c++ g++ build

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

如何使xticks均匀分布,尽管它们有价值?

我试图生成一个图,其中x轴是几何序列,而y轴是0.0到1.0之间的数字.我的代码看起来像这样:

form matplotlib import pyplot as plt
plt.xticks(X)
plt.plot(X,Y)
plt.show()
Run Code Online (Sandbox Code Playgroud)

这会生成如下情节:

我的情节

如您所见,我明确地将x轴刻度设置为属于几何序列的刻度线.

我的问题:是否有可能使x-ticks均匀分布,尽管它们的价值,因为序列的初始条款很小,并且挤在一起.有点像对数刻度,如果处理基数的幂,但是对于几何序列,这是理想的,我认为,就像这里的情况一样.

python plot matplotlib

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

如何抑制 OpenCV 警告

我正在尝试运行以下代码:

int main(int argc, char** argv )
{
    cv::redirectError(cvNulDevReport);
    std::string address(argv[1]);
    cv::VideoCapture cap(address); // open the camera
    if(!cap.isOpened())  // check if we succeeded
    {
        std::cerr<<"Error: Could not connect to camera.";
        return 0;
    }
    ...
}
Run Code Online (Sandbox Code Playgroud)

现在,我知道每当 argv[1] 引用的资源不存在时,我都会收到类似警告

warning: Error opening file (../../modules/highgui/src/cap_ffmpeg_impl.hpp:545)
Run Code Online (Sandbox Code Playgroud)

我想要的是从控制台输出中抑制这个和任何其他警告或错误,因为我想自己提供一个简单、更容易理解的错误。据我了解,对 cv::redirectError 的调用应该有效。我还尝试创建一个虚拟错误处理函数并使用指向该函数的指针调用 cv::redirectError ,但我仍然收到相同的警告。

查看警告指向的文件的源代码,我看到它是 CV_WARN 宏被替换,从同一个源文件来看,它要么是对 fprintf 的调用,要么什么也没有。

任何帮助表示赞赏。

c++ opencv

5
推荐指数
0
解决办法
1966
查看次数

在不同的 GCC 版本之间切换

我最近构建了一个旧版本的 GCC 并将其安装在我的主目录(规范~/local/gcc-5.3.0)中。但是,我只需要为 CUDA 项目使用此编译器,其余时间将与系统编译器 (GCC 6.2.1) 一起使用。所以,我想我需要找到一种在需要时在这些之间切换的方法,并且以一种还可以更改库并适当地包含路径的方式。

我知道这update-alternatives是一种方法,但它似乎需要设置 root 权限,而我没有。

下一个最好的事情可能是编写一个 shell 函数.bashrc来确保以下内容:

  • 每个调用在系统和本地 gcc 之间切换

  • 每当进行切换时,它都会调整路径,以便在选择本地 gcc 时,它首先查找自己安装的头文件和库,然后再查找系统路径,例如/usr/local/includeusr/local/lib。以前的答案表明修改LD_LIBRARY_PATH应该就足够了,因为 GCC 安装“知道”它自己的头文件和静态库在哪里(我不确定它是否正确,我想我可能需要修改CPATH等等)。

以上是实现这一目标的最佳方法吗?如果是这样,在实现这样的功能时我应该设置什么路径?

c linux gcc cuda

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