小编pan*_*ami的帖子

错误:在嵌套类中有不完整的类型|:

我正在尝试声明类WRAPPED中的类型对象,WRAPPED并且该类WRAPPED包含在另一个名为的类中WRAPPER.我收到这些编译器错误.

nested_class_incomplete_type.cpp|56|instantiated from 'WRAPPER<NODE>'|
nested_class_incomplete_type.cpp|62|instantiated from here|
nested_class_incomplete_type.cpp|36|error: 'WRAPPER<T>::WRAPPED::WRAP' has incomplete type|
nested_class_incomplete_type.cpp|33|error: declaration of 'class WRAPPER<NODE>::WRAPPED'|
Run Code Online (Sandbox Code Playgroud)

我也试过这样做WRAPPER::WRAPPED WRAP;但产生了同样的错误.如果WRAPPED类存在于类之外,这通常不会成为问题,但由于某种原因,它不允许我声明这样一个简单的对象.随意启发C++编译器语义和神Stroustrup的神奇世界.继承人的代码.

#include <iostream>

using namespace std;

class NODE
{
        int data;

    public:

        NODE(){}
        ~NODE(){}
        NODE(int data)
        {
            this->data = data;
        }
        void print()
        {
            std::cout<<"data: "<<this->data<<std::endl;
        }
};
template <class T>
class WRAPPER
{
    public:

        static T GLOBAL_WRAPPER_TYPE;

    WRAPPER(){}
    ~WRAPPER(){}

        class WRAPPED
        {
            public:

            WRAPPER::WRAPPED WRAP;

            WRAPPED(){}
            ~WRAPPED(){}
            void set(T …
Run Code Online (Sandbox Code Playgroud)

c++ nested-class incomplete-type

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

使用new关键字转发声明和typename

我在类中声明了一个类型为b的新指针时出现错误.请帮忙.

#include <iostream>

namespace B
{
    class b;
}
class a
{
    private:

    B::b* obj_b;

    public:

    a(){}
    ~a(){}
    void create()
    {
        b* obj_b = new b;
    }
};
class b
{
    private:

        a *obj_a;

    public:
        b()
        {
            obj_a->create();
        }
        ~b(){}
};
int main()
{
    b obj;

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++ namespaces forward-declaration fully-qualified-naming

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

Windows.h线程关联

下面的代码确实编译并运行,除了输出不是我期望的那样.我希望程序创建n个线程(取决于可用的多核数量)并运行在程序结束时找到的简单例程进行输出

"测试"

接下来是1-10.我得到的是一个输出,它写了一些数字,但它最多不超过两个,并且函数threadmain似乎不完全在一个线程上运行,但它有点输出测试:012在其他线程.我知道多线程会破坏输出,但我应该在屏幕的某处看到数字3,4,5,6,7,8,9,但它没有显示出来.

#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include <stdio.h>
#include <cmath>
#include <iostream>

HANDLE *m_threads = NULL;
static DWORD_PTR WINAPI threadMain(void* p);

DWORD_PTR GetNumCPUs()
{
  SYSTEM_INFO m_si = {0, };
  GetSystemInfo(&m_si);
  return (DWORD_PTR)m_si.dwNumberOfProcessors;
}

CRITICAL_SECTION g_crit_sec;
static int g_start = 0;

int main(int argc, char **args)
{
  DWORD_PTR c = GetNumCPUs();

  m_threads = new HANDLE[c];

  InitializeCriticalSectionAndSpinCount(&g_crit_sec, 0x80000400);

  for(DWORD_PTR i = 0; i < c; i++)
  {
    DWORD_PTR m_id = 0;
    DWORD_PTR m_mask = 1 << i;

    m_threads[i] = CreateThread(NULL, 0, …
Run Code Online (Sandbox Code Playgroud)

c++ windows multithreading setthreadaffinitymask

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

Erlang打印processID?

这是一个非常简单的问题,涉及打印出连接的进程ID.例如打印出来听这个?我假设Listen是一个Pid btw ......

{ok, Listen} = gen_tcp:listen();
Run Code Online (Sandbox Code Playgroud)

io erlang pid

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

Erlang:将记录传递给函数?

以下代码在编译时会发出警告:

23> c(passing_records).                                              
passing_records.erl:8: Warning: wrong number of arguments in format call
{ok,passing_records}
Run Code Online (Sandbox Code Playgroud)

但是当我尝试运行它时,尝试将变量传递给名为 的记录时出现此错误pass

22> passing_records:record_passing([#pass{arg1=2,name="x",to_go=5}]).
* 1: record pass undefined
Run Code Online (Sandbox Code Playgroud)

代码如下:

-module(passing_records).
-export([record_passing/1]).
-record(pass, {arg1 ,
                name="",
                to_go=0}).  

record_passing( #pass{arg1 = ARG1, name = NAME, to_go = TO_GO}) ->
        io:format("~p ~p~n", [ARG1,NAME,TO_GO]).    
Run Code Online (Sandbox Code Playgroud)

erlang function record argument-passing

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

Erlang:将元组加在一起?

我尝试这样做,以便在当前系统时间之前90秒创建一个新日期:

12> {{00,00,00},{00,01,30}}+erlang:localtime().
** exception error: an error occurred when evaluating an arithmetic expression
     in operator  +/2
        called as {{0,0,0},{0,1,30}} + {{2013,3,8},{6,3,33}}
Run Code Online (Sandbox Code Playgroud)

有没有简单的方法来做到这一点?

erlang tuples addition systemtime

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

Erlang:进程何时终止,gen_tcp:controlling_process(Socket,Pid)如何工作?

我想知道的是,Pid如果使用套接字关闭套接字,并且套接字gen_tcp:controlling_process(Socket, Pid),在什么条件下发送此消息,进程是否会终止{tcp_closed, Socket}?有没有办法防止服务器端的套接字关闭,或者这总是正常的?还有什么特定的方法来终止一个知道的过程Pid吗?

sockets erlang process

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

Erlang:将TCP发送的字符串转换为正确的形式,例如<<"SomeString">>转换为"SomeString"?

我有一个客户端和一个服务器,我使用客户端发送一个字符串"Hello",它在服务器端显示为<<"Hello">>.有没有办法简单地转换<<"Hello">>回来"Hello"?我试过用,

String = io_lib:format("~p",[StringIn]),
            lists:flatten(String),
Run Code Online (Sandbox Code Playgroud)

但这使得格式<<"Hello">>变成[[60,60,"\"Hello\"",62,62]]......

顺便提一下代码:

-module(ss1).
-compile(export_all).
-import(lists, [reverse/1]).

client() ->
    {ok, Socket} =  gen_tcp:connect("localhost", 2345,[binary, {packet, 4}]),
    ok = gen_tcp:send(Socket, "Hello"),
    receive
    {tcp,Socket,String} ->
        io:format("Client received = ~p~n",[String]),       
        io:format("Client result = ~p~n",[String]),
        gen_tcp:close(Socket)
    end.

server() ->
    {ok, Listen} = gen_tcp:listen(2345, [binary, {packet, 4},  {reuseaddr, true}, {active, true}]),
    {ok, Socket} = gen_tcp:accept(Listen),
    gen_tcp:close(Listen),  
    loop(Socket).

loop(Socket) ->
    receive
    {tcp,Socket,String} ->      
        io:format("Server received String = ~p~n",[String]),            
        io:format("Server replying …
Run Code Online (Sandbox Code Playgroud)

string erlang formatting tcp client-server

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

在receive..end中找到case..of的多个匹配?

我在编译以下代码时遇到问题,

2> c(match).
match.erl:13: syntax error before: '{'
match.erl:2: function receiver/0 undefined
error
Run Code Online (Sandbox Code Playgroud)

match.erl

-module(match).
-export([receiver/0]).

receiver() ->
    receive
        {From, A, B} ->
            case A =:= B of
                true ->
                    From ! "true";
                false ->
                    From ! "false"
            end
        {From, A, B, C}->
            case A =:= B =:= C of
                true ->
                    From ! "true";
                false ->
                    From ! "false"
            end
    end.
Run Code Online (Sandbox Code Playgroud)

我已经尝试在比赛前做所有可能的分号,句号,逗号,{From, A, B, C}->似乎没有任何效果.这就是Erlangs的语法噩梦!

erlang syntax-error switch-statement

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

C++:for(;;)的目的?

我只想知道for(;;)以下代码中该行的原因.

//
// blocking_tcp_echo_server.cpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
// Copyright (c) 2003-2012 Christopher M. Kohlhoff (chris at kohlhoff dot com)
//
// Distributed under the Boost Software License, Version 1.0. (See accompanying
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
//

#include <cstdlib>
#include <iostream>
#include <boost/bind.hpp>
#include <boost/smart_ptr.hpp>
#include <boost/asio.hpp>
#include <boost/thread/thread.hpp>

using boost::asio::ip::tcp;

const int max_length = 1024;

typedef boost::shared_ptr<tcp::socket> socket_ptr;

void session(socket_ptr sock)
{
  try
  {
    for (;;)
    {
      char data[max_length];

      boost::system::error_code error;
      size_t length = sock->read_some(boost::asio::buffer(data), …
Run Code Online (Sandbox Code Playgroud)

c++ for-loop boost-asio

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

对计数器使用setTimeout会产生奇怪的输出吗?

我检查,加倍检查并重新检查此代码以确保它正常工作(并且它很简单)但我无法弄清楚为什么我得到〜计数:输出17k,请帮助...

谢谢

<html>
<head>  
</head> 
<body onload = "counter()">
<script type="text/javascript">
var count = 0;
function counter()
{
   document.getElementById("div_1").innerHTML = "count: "+count;
   count++;
   setTimeout(counter(), 1000);
}
</script>
<div id = "div_1"></div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

javascript settimeout

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

如何使用DOM更改/添加p标签样式?

我想font-size在我的P标签中使用DOM 的变量,但我似乎无法找到一种方法来访问它来改变样式.我试过这个,

document.body.p.style.font-size = ""+p_var+"px";

以及尝试几种使用方式setAttribute,没有运气.任何人都可以告诉我如何改变它,如果可能的话.

html javascript css dom paragraph

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