小编Seb*_*ach的帖子

多态返回类型,接口,回调?

假设Goo是我的类型类,通常声称它是C++,Java或C#等语言中的等价接口:

class Goo goo where ham :: goo -> String

data Hoo = Hoo
instance Goo Hoo where ham _ = "Hoo!"
                       mustard _ = "Oh oh."

data Yoo = Yoo
instance Goo Yoo where ham _ = "Yoo!"
                       mustard _ = "Whew"
Run Code Online (Sandbox Code Playgroud)

但我不能回复Goo:

paak :: (Goo goo) => String -> goo
paak g = (Yoo)

-- Could not deduce (goo ~ Yoo)
-- from the context (Goo goo)
--  bound by the type signature for …
Run Code Online (Sandbox Code Playgroud)

haskell

4
推荐指数
2
解决办法
267
查看次数

`decltype`并将ADL查找与非ADL查找混合

测试用例

在一个内部数据类型的情况下,让函数的返回类型与从头auto foo(T f)调用时相同:sin(f)cmathf

template <typename T>
auto foo(T f) -> decltype(sin(f))
{
    using std::sin;
    return sin(f);
}
Run Code Online (Sandbox Code Playgroud)

这已破了.该sin(f)范围内decltype没有抬头之内std,因此只C变种sin(double)被发现,它的返回类型为double.以下程序演示了:

#include <cmath>
#include <iostream>
#include <typeinfo>

namespace meh {
    struct Nanometer {};
    struct SinfulNanometer {};
    SinfulNanometer sin(Nanometer) { return SinfulNanometer(); }
}

template <typename T>
auto foo(T f) -> decltype(sin(f))
{
    using std::sin;
    std::cout << typeid(decltype(sin(f))).name() << '\n';
}


int main () {
    std::cout …
Run Code Online (Sandbox Code Playgroud)

c++ decltype argument-dependent-lookup c++11

4
推荐指数
2
解决办法
443
查看次数

因睡眠而导致的奇怪行为()

我刚刚熟悉睡眠(),我发现了

#include<stdio.h>
int main()
{
int i=0;
printf("*********Testing Sleep***********\n");
for(i=0;i<10;i++)
{
    printf("%d",i);
    sleep(1);
}
return 0;
Run Code Online (Sandbox Code Playgroud)

}

这不会打印每次迭代的数量而是在循环时转储所有数字....但是当我修改printf时...

#include<stdio.h>
int main()
{
int i=0;
printf("*********Testing Sleep***********\n");
for(i=0;i<10;i++)
{
    printf("%d\n",i);
    sleep(1);
}
return 0;
Run Code Online (Sandbox Code Playgroud)

}

现在,当我添加'\n'新行时,它按预期工作...为什么它在前一个行为奇怪......

c

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

"缺少退货声明",但我知道它就在那里

假设我有以下功能:

// Precondition:  foo is '0' or 'MAGIC_NUMBER_4711'
// Returns:       -1 if foo is '0'
//                 1 if foo is 'MAGIC_NUMBER_4711'
int transmogrify(int foo) {
    if (foo == 0) {
        return -1;
    } else if (foo == MAGIC_NUMBER_4711) {
        return 1;
    }
}
Run Code Online (Sandbox Code Playgroud)

编译器抱怨"缺少return语句",但我知道foo永远不会有0或不同的值MAGIC_NUMBER_4711,否则我的函数将没有定义的语义.

对此更好的解决方案是什么?这真的是一个问题,即标准说的是什么?

c++

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

如何在C++ 11中自动实现

如何auto实施C++11?我试过跟随,它的工作原理C++11

auto a = 1;
// auto = double
auto b = 3.14159;
// auto = vector<wstring>::iterator
vector<wstring> myStrings;
auto c = myStrings.begin();
// auto = vector<vector<char> >::iterator
vector<vector<char> > myCharacterGrid;
auto d = myCharacterGrid.begin();
// auto = (int *)
auto e = new int[5];
// auto = double
auto f = floor(b);
Run Code Online (Sandbox Code Playgroud)

我想检查一下如何使用plain来实现 C++

c++ c++11

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

为MathJax设置CSS样式,颜色

嗨,我正在尝试为我的MathJax输出添加样式.特别是我想为我的方程设置一个全局颜色(以便它匹配我页面其余部分的样式).目前我有以下配置.

<script type="text/x-mathjax-config">
    MathJax.Hub.Config({
      jax: ["input/TeX", "output/HTML-CSS"],
      tex2jax: {
        inlineMath: [ ['$', '$'] ],
        displayMath: [ ['$$', '$$']],
        processEscapes: true,
        skipTags: ['script', 'noscript', 'style', 'textarea', 'pre', 'code']
      },
      messageStyle: "none",
      "HTML-CSS": { 
          preferredFont: "TeX", 
          availableFonts: ["STIX","TeX"], 
          styles: {".MathJax" {color: "#CCCCCC";}} 
          }
    });
</script>
<script src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS_HTML" type="text/javascript"></script>
Run Code Online (Sandbox Code Playgroud)

但是,如果我styles在我的配置中包含标记,我的页面上的数学就完全拒绝显示.另一方面,如果我删除它,它显示正常.

编辑:我还应该注意,我已经尝试将样式直接添加到我的CSS中,如其他问题所示,但这导致了同样的事情,根本没有显示数学.


更新:我已经添加了:正如Davide在下面建议的那样,现在我的方程显示但是样式信息被忽略了.样式似乎是从页面主体继承的,但是将数学包装在具有不同样式的div中似乎也不会影响它.

UPDATE2:我已经解决了mathjax忽略样式命令的问题.文本的颜色由我的CSS*{color:#292929}中的一行全局设置.这意味着MathJax的样式被忽略了.只需将*更改为body,a,p,h1,h2即可解决问题.

css colors mathjax

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

C++:类和回调问题

这是我的代码和要求:

我有2个A和B类,它们没有任何继承.我使用A类的一个方法来调用B类的一个方法.然后B类的方法应该回调A类的一个方法来执行一个回调.

部分代码:

classA.h:

#include "classB.h"

class classA
{
  public:
  classA();
  classB *pClassB;
  void callClassB();
  void callBack();
};
Run Code Online (Sandbox Code Playgroud)

classA.cpp:

#include "classA.h"
classA::classA()
{
  pClassB = new classB();
}

void classA::callBack()
{
  return;
}

void classA::callClassB()
{
  pClassB->callFunction();
}
Run Code Online (Sandbox Code Playgroud)

classB.h:

class classB
{
  public:
  classB();
  void callFunction();
}
Run Code Online (Sandbox Code Playgroud)

classB.cpp:

#include "classB.h"
classB::classB()
{
}

void classB::callFunction()
{
   // I should call classA's callback here!
}
Run Code Online (Sandbox Code Playgroud)

问题是,我不能在classB.h中包含classA.h,因为它会在其他地方引起一些编译问题(我无法解决).我不能将classB作为classA的子类(如果可以的话,我只需要做classA::callBack()).那么这种情况有解决方案吗?

更新:这是我修改过的:

class classB
{
  public:
  classB(classA& pCallBack);
  void callFunction();
  void (classA::*m_callback)(void);
};

classA::classA() …
Run Code Online (Sandbox Code Playgroud)

c++

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

C++ if ... then语句

所以我正在尝试制作一个简单的应用程序来测试用户.它会询问一个问题并且用户回答1,2,3或4.然后应用程序接受该答案,如果正确,则将total_score添加+1,最后将显示该值.一切看起来都很合理,但是当我运行它并且我到达该if (q1_valid == false)部分时它会跳过cout并运行goto,无论q1_valid是true还是false.

#include <iostream>

using namespace std;

int main()
{
    int q1_answer;
    int total_score;
    bool q1_correct;
    bool q1_valid;

    Question_1:
    cout << "Question 1 (#3 is correct)" << endl;
    cout << "1.) Answer 1" <<endl;
    cout << "2.) Answer 2" <<endl;
    cout << "3.) Answer 3" <<endl;
    cout << "4.) Answer 4" <<endl;
    cin >> q1_answer;

    if (q1_answer == 1)
    q1_correct = false;
    q1_valid = true;

    if (q1_answer == 2)
    q1_correct = false;
    q1_valid = true;

    if …
Run Code Online (Sandbox Code Playgroud)

c++

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

定义错误代码的规则?

我正在开发一个项目,我需要在工作失败的情况下返回错误代码.但是这样做的"规则"是什么?

例如:

if(tryDoUpload() == false) {
  //upload failed
 int UPLOAD_FAILED = 0x0;
}
Run Code Online (Sandbox Code Playgroud)

0x0,是否有设置此错误代码的模式或我可以设置任何?

我希望这很清楚.

c# error-code

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

如何在字符串中添加数字?

我想做这样的事情(显示我在SDL游戏中运行的FPS):

SDL_WM_SetCaption("FPS: " + GetTicks(&fps)/1000.f, NULL);
Run Code Online (Sandbox Code Playgroud)

但Visual Studio intellisens抱怨表达式必须具有整数或枚举类型.

我做错了什么?

c++

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

标签 统计

c++ ×6

c++11 ×2

argument-dependent-lookup ×1

c ×1

c# ×1

colors ×1

css ×1

decltype ×1

error-code ×1

haskell ×1

mathjax ×1