我认为"const-correctness"的概念定义得很明确,但当我与其他人谈论它时,似乎我们对它的含义有不同的看法.有人说它是关于在尽可能多的地方有"const"注释的程序.其他人将程序定义为const-correct,当且仅当使用const注释时没有违反constness(即,它是编译器为您检查的属性).
所以我想知道,这些函数中哪些是正确的:
struct Person {
string getName1() const { return _name; }
string getName2() { return _name; }
string getName3() const { _name = "John"; return _name; }
string getName4() { _name = "John"; return _name; }
string _name;
};
Run Code Online (Sandbox Code Playgroud)
我在互联网上搜索了定义,但实际上找不到明确的答案,我也怀疑可能存在一个发生过中的柑橘生成案例.那么任何人都可以为定义提供任何可靠的引用吗?
我目前正在练习用C++编写类和头文件.我有一个问题:让我们说在我的头文件中我有一个客户端可以使用的公共函数,我知道如何在相应的类中实现它.但是,让我们说这个功能分为几个步骤,可以写成我不希望用户看到的独立功能(保护知识产权).通常,对于头文件中的每个已定义函数,我都会在.cpp文件中的myClassName :: myFunctionName(参数1 ..)中编写.有没有办法只在.cpp文件中定义和使用函数?例如,我写了一个程序来查看两个单词是否是字谜(具有相同的字母).
我的头文件是:
#ifndef _Anagrams_h
#define _Anagrams_h
#include <string>
using namespace std;
class Anagrams{
public:
Anagrams(string &s);
static bool areTwoWordsAnagrams(string s1, string s2) ;
string getWord()const;
void setWord(string &s);
private:
string word;
};
#endif
Run Code Online (Sandbox Code Playgroud)
我的班级是:
#include "Anagrams.h"
#include <string>
using namespace std;
Anagrams::Anagrams(string &s){
word = s;
}
bool Anagrams::areTwoWordsAnagrams(string word1, string word2){
int sizeOfWord1 = word1.size();
int sizeOfWord2 = word2.size();
int array1[26];
int array2[26];
for (int i = 0; i < 26; i++){ //Initialize both arrays
array1[i] …Run Code Online (Sandbox Code Playgroud) 我想通过包装 C++11 中的 std::thread 类来使用我自己的 Thread 实现,这样我就可以像我想要的那样处理异常。
这是我的包装类:
#include <Types.hpp>
#include <thread>
#include <exception>
#include <functional>
class Thread
{
private:
std::exception_ptr exceptionPtr;
std::thread thread;
public:
using Id = std::thread::id;
using NativeHandleType = std::thread::native_handle_type;
Thread() noexcept = default;
Thread(Thread &&t) noexcept :
exceptionPtr(std::move(t.exceptionPtr)),
thread(std::move(t.thread))
{
}
Thread &operator =(Thread &&t) noexcept
{
exceptionPtr = std::move(t.exceptionPtr);
thread = std::move(t.thread);
return *this;
}
template<typename Callable, typename... Args>
Thread(Callable &&f, Args &&... args) :
exceptionPtr(nullptr),
thread([&](Callable &&f, Args &&... args)
{
try
{
std::once_flag …Run Code Online (Sandbox Code Playgroud) 我正在尝试对以下元素进行比较:
std::vector<std::array<uint8_t, 6> > _targets =
{
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x11 }
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x22 }
};
Run Code Online (Sandbox Code Playgroud)
传统阵列:
uint8_t _traditional[6] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x33 }
Run Code Online (Sandbox Code Playgroud)
如:
for (auto target : _targets)
{
if (! memcmp(target, _traditional, 6)) {
known = 1;
}
}
Run Code Online (Sandbox Code Playgroud)
并收到数据转换错误:
error: cannot convert 'std::array<unsigned char, 6u>' to 'const void*' for argument '1' to 'int memcmp(const
void*, const void*, size_t)
Run Code Online (Sandbox Code Playgroud)
我可以执行什么属性字节比较操作来完成平等评估?
我在 中有一个宏定义MyClass.h,如下所示:
#define _BufferSize_ 64
Run Code Online (Sandbox Code Playgroud)
我将 include 指令放置在MyClass.h以下内部main.cpp:
#include "MyClass.h"
Run Code Online (Sandbox Code Playgroud)
这是否意味着我可以_BufferSize_在main.cppand中使用MyClass.h?另外,这是好的做法吗?
我尝试用RSA算法加密简单文本.我的代码有问题.
RSA *_RSA ;
unsigned char text[2560] = "A";
unsigned char sectext[2560];
unsigned char decrypttext[2560];
int i = 0;
_RSA = RSA_generate_key ( 1024, 65537, NULL, NULL );
i = RSA_public_encrypt ( 1, text, sectext, _RSA, RSA_PKCS1_OAEP_PADDING );
i = RSA_private_decrypt( 1, sectext, decrypttext, _RSA, RSA_PKCS1_OAEP_PADDING);
RSA_free ( _RSA );
Run Code Online (Sandbox Code Playgroud)
返回值RSA_public_encrypt是128,这是密文的大小.RSA_private_decrypt返回-1,这是一个错误.如果我尝试显示恢复的文本,那么我什么也得不到.
为什么RSA_private_decrypt返回-1?
我正在尝试编译我在visual studio中下载的一些代码.该代码适用于msvc 6,我将其导入VS2010.该代码用于通过编译DLL为labview提供ASIO支持.看到这里整个代码.
构建时出现以下错误:"错误C2373:'_ pctype':重定义;不同的类型修饰符."
代码段如下:
unsigned short _Ints[ 512 ];
unsigned short *_pctype = _Ints;
如果有人将从我提供的链接引用代码包,则来自文件GenMonCIN.c
__managedObjectModel即使是modelURL也存在.有一个类似的帖子,但接受的答案(重命名模型文件和重新启动Xcode)对我不起作用.
- (NSManagedObjectModel *)managedObjectModel
{
if (__managedObjectModel != nil) {
return __managedObjectModel;
}
NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"Failed" withExtension:@"momd"];
__managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];
return __managedObjectModel;
}
Run Code Online (Sandbox Code Playgroud)
我modelURL在控制台
(lldb) po modelURL
(NSURL *) $4 = 0x088832f0 file://localhost/Users/philip/Library/Application%20Support/iPhone%20Simulator/5.1/Applications/9E59167C-8D9E-4ADE-BBD7-0BE9A33A6A86/Failed.app/Failed.momd/
Run Code Online (Sandbox Code Playgroud) 我在头文件中看到了以下内容
typedef enum Test__tag {
foo,
bar
} Test;
Run Code Online (Sandbox Code Playgroud)
我想知道为什么要使用typedef; 我可以用
enum Test{
foo,
bar
};
Run Code Online (Sandbox Code Playgroud)
是对的吗?
我试图在C/C++中定义一个名为_end的全局数组,大小约为1000,但即使我只是迭代它,我也会遇到分段错误.名称"_end"在C/C++中是否非常特殊导致此类问题?或者这可能是一个非常严重的错误...(代码附在下面,它在g ++ 4.3.2,4.5.2,4.9.2等中断)
#include <iostream>
using namespace std;
int _end[1111];
int main() {
for (int i=0; i<1111; i++) {
cout << i << endl;
_end[i]++;
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
您可以在https://ideone.com/XAcUeZ上查看结果.另请参阅此处的C编译器.